编程语言
首页 > 编程语言> > java-如何在gradle构建期间仅在jar中包含某些软件包

java-如何在gradle构建期间仅在jar中包含某些软件包

作者:互联网

我有一个具有以下包装结构的项目
src / com / a1
src / com / a2
src / com / a3
src / com / a4

我已经编写了gradle脚本来构建jar,其中包含所有软件包的已编译Java文件.我只需要jar中的“ a2”和“ a4”包.
但是:a2和a4中的类是指“ a1”和“ a3”中存在的类

解决方法:

>多项目构建

您实际上想将您的项目拆分为一个多项目.仅包含项目中的特定软件包是容易出错的. 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

但是,我不建议这样做.我们通过指定排除和包含来使用Ant来完成此操作,并且它一直是导致NoClassDefFoundError的错误的来源.

标签:build-gradle,gradle,build,java
来源: https://codeday.me/bug/20191028/1954747.html