Gradle:如何从罐子中排除特定的包装?

2022-09-02 00:05:06

我们有一个与已删除的某些要求相关的包,但我们不希望必须删除该代码,因为将来可能会再次需要它。因此,在我们现有的 ant 构建中,我们只是将这个包排除在 jar 中编译之外。这些类无法编译,因为我们也删除了它们的依赖项,因此它们无法包含在生成中。

我试图在Gradle中模仿该功能,如下所示:

jar {
    sourceSets.main.java.srcDirs = ['src', '../otherprojectdir/src']

    include (['com/ourcompany/somepackage/activityadapter/**',
                 ...
        'com/ourcompany/someotherpackage/**'])

    exclude(['com/ourcompany/someotherpackage/polling/**'])
}

即使使用上面的 exclude 调用(我也尝试过不带方括号),gradle 仍在尝试编译类,这会导致编译失败。如何防止 Gradle 尝试编译该软件包?polling


答案 1

如果您不想编译这些包,则此解决方案有效,但是如果要编译它们并从JAR中排除,则可以使用

// tag::jar[]
jar {
    exclude('mi/package/excluded/**')   
    exclude('mi/package/excluded2/**')  
}
// end::jar[]

答案 2

如果您有一些不想编译的源代码,则必须为源代码声明一个过滤器,而不是为放入Jar中的类文件声明一个过滤器。像这样:

sourceSets {
    main {
        java {
            include 'com/ourcompany/somepackage/activityadapter/**'
            include 'com/ourcompany/someotherpackage/**'
            exclude 'com/ourcompany/someotherpackage/polling/**'
        }
    }
}

推荐