gpt4 book ai didi

gradle - 如何使用 Gradle 构建仅包含类子集的特殊 JAR?

转载 作者:行者123 更新时间:2023-12-03 03:08:02 26 4
gpt4 key购买 nike

我得到了一个项目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/...

拥有此A 项目的人之前使用JBuilder 并在源定义中包含指向并行项目的B/ejb/C/src 的指针。 A 项目构建了一个 jar,其中包含从其他树编译的类。我正在尝试弄清楚如何使用 Gradle 执行此操作。我想在 B 项目中制作一个 B/build.gradle ,它将创建 .class 的 B-C-version.jar 从这些来源编译的文件:

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

那也行。我如何使用 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
}

然后您还可以单独声明依赖项并获取正确的传递性绘制等等。但这在您的情况下可能有点矫枉过正。

关于gradle - 如何使用 Gradle 构建仅包含类子集的特殊 JAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com