我有一个包含以下包结构的项目SRC / COM / A1SRC / COM / A2SRC / COM / A3SRC / COM / A4
我编写了一个gradle脚本来构建jar,它包含所有包的已编译java文件 . 我想在jar里面只有"a2"和"a4"包 . However: classes in a2 and a4 are referring to the classes present in the "a1" and "a3"
您实际上想要将项目拆分为 multi-project . 仅包含项目中的特定包容易出错 . Gradle有很多关于多项目构建的文档:https://docs.gradle.org/current/userguide/multi_project_builds.html
如果您仍想从JAR中排除a1和a3,可以尝试以下方法:
task myJar(type: Jar) { from sourceSets.main.output exclude 'a1/**' exclude 'a3/**' }
有关详细信息,请查看Jar任务的文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html
但是,我不推荐这个 . 我们通过指定excludes和includes来执行此操作,这一直是bug的来源,导致NoClassDefFoundError .
1 回答
您实际上想要将项目拆分为 multi-project . 仅包含项目中的特定包容易出错 . Gradle有很多关于多项目构建的文档:https://docs.gradle.org/current/userguide/multi_project_builds.html
在Jar任务中排除
如果您仍想从JAR中排除a1和a3,可以尝试以下方法:
有关详细信息,请查看Jar任务的文档:https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html
但是,我不推荐这个 . 我们通过指定excludes和includes来执行此操作,这一直是bug的来源,导致NoClassDefFoundError .