首页 文章

如何在gradle构建期间仅在jar中包含某些包

提问于
浏览
3

我有一个包含以下包结构的项目
SRC / COM / A1
SRC / COM / A2
SRC / COM / A3
SRC / 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"

1 回答

  • 3
    • 多项目构建

    您实际上想要将项目拆分为 multi-project . 仅包含项目中的特定包容易出错 . Gradle有很多关于多项目构建的文档:https://docs.gradle.org/current/userguide/multi_project_builds.html

    在Jar任务中排除

    如果您仍想从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 .

相关问题