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

时间:2015-01-22 11:06:02

标签: java build gradle build.gradle

我有一个包含以下包结构的项目
SRC / COM / A1
SRC / COM / A2
SRC / COM / A3
src / com / a4

我编写了一个gradle脚本来构建jar,其中包含所有包的已编译java文件。我想在jar里面只有“a2”和“a4”包。 但是:a2和a4中的类指的是“a1”和“a3”中的类

1 个答案:

答案 0 :(得分:4)

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

    1. 在Jar任务中排除
    2. 如果您仍想从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。