我收到了一个项目A
,需要访问另一个项目B
中的类文件。更准确地说,A
只需要从B/ejb/C/src
树的B/
部分编译的类:
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/build.gradle
项目中创建B
,该项目将创建从这些来源汇编的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
项目进行访问。
即,B-C-version.jar
理想情况下只有这些类:
com/company/admin/Foo.class
com/company/admin/FooHome.class
但如果B-C-version.jar
有这些类:
com/company/admin/*.class
那也没关系。如何使用build.gradle
项目中的B
进行此类操作?
答案 0 :(得分:2)
您可以简单地声明自定义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代码中使用它,那么如果需要添加文件,则不需要使用包含并更新包含,但是你只需将它们放在源集的源文件夹中就可以了,就像
一样sourceSets { c }
task cJar(type: Jar) {
baseName = project.name + '-C'
from sourceSets.c.output
}
然后你也可以分别声明依赖关系并获得传递中的正确依赖等等。但在你的情况下可能会有点过分。