如何使用Gradle构建一个只包含一个子集类的特殊JAR?
我得到了一个项目如何使用Gradle构建一个只包含一个子集类的特殊JAR?,gradle,build.gradle,Gradle,Build.gradle,我得到了一个项目a,需要从另一个项目B访问类文件。更准确地说,A只需要从B/树的B/ejb/C/src部分编译类: B/ejb/C/src/com/company/admin/Foo.java B/ejb/C/src/com/company/admin/FooHome.java B/ejb/C/src/com/company/admin/FooBean.java B/ejb/NOTNEEDED/src/com/company/data/... 在使用JBuilder之前拥有这个A项目并包含在源
a
,需要从另一个项目B
访问类文件。更准确地说,A
只需要从B/
树的B/ejb/C/src
部分编译类:
B/ejb/C/src/com/company/admin/Foo.java
B/ejb/C/src/com/company/admin/FooHome.java
B/ejb/C/src/com/company/admin/FooBean.java
B/ejb/NOTNEEDED/src/com/company/data/...
在使用JBuilder之前拥有这个A
项目并包含在源代码定义中的人指向并行项目的B/ejb/C/src
。A
项目构建一个jar,其中包含从另一棵树编译的类。我想知道如何使用Gradle实现这一点。我想在B
项目中创建一个B/build.gradle
,该项目将创建一个B-C-version.jar
的.class
文件,该文件由以下来源编译:
B/ejb/C/src/com/company/admin/Foo.java
B/ejb/C/src/com/company/admin/FooHome.java
B/ejb/C/src/com/company/admin/FooBean.java
然后我将发布到Maven并从A
项目访问
i、 例如,B-C-version.jar
理想情况下只有以下类:
com/company/admin/Foo.class
com/company/admin/FooHome.class
com/company/admin/*.class
但是如果B-C-version.jar
有以下类:
com/company/admin/Foo.class
com/company/admin/FooHome.class
com/company/admin/*.class
那也可以。如何在
B
项目中使用build.gradle
创建这样的东西?您可以简单地声明一个自定义Jar
任务,如
task cJar(type: Jar) {
baseName = project.name + '-C'
from sourceSets.main.output
include 'com/company/admin/Foo.class', 'com/company/admin/FooHome.class'
}
或者,您可以为您的api创建一个专用的源集,然后从其他B代码和a代码中使用该源集,如果需要添加文件,则无需使用include并更新include,但您只需将它们放在源集中的源文件夹中,即可完成,如
sourceSets { c }
task cJar(type: Jar) {
baseName = project.name + '-C'
from sourceSets.c.output
}
然后,您还可以单独声明依赖项,并以传递方式绘制正确的依赖项,以此类推。但在你的情况下,这可能是矫枉过正