gradle 将jar输出从一个模块放入另一个模块

envsm3lx  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(227)

我有Gradle 7项目,有两个子模块

- Root
   - sub project A
   - sub project B

我的目标如下:
1.构建项目A时,它会创建一个A.jar文件。
1.构建项目B时,它会创建一个B.jar文件,其中包含来自项目A构建的未分解A.jar输出
为了更清楚起见,B.jar应该如下所示
x一个一个一个一个x一个一个二个x
子项目A构建得很好,但我不知道如何将其jar嵌入到B.jar中
根据另一个问题,我应该能够通过. archiveFile属性获得对任务的. jar输出的引用
我在B的编译文件中试过了

jar {
    sourceSets.main.resources.includes = project(":A").getByName("build").archiveFile
}

但这以错误告终
无方法签名:jar()适用于参数类型:(构建_62kfcng7dpn0plap6jwx8ojvt$_run_closure2)值:[构建_62kfcng7dpn0plap6jwx8ojvt$_run_closure2@be2d508]

ujv3wf0j

ujv3wf0j1#

假设您要包含类和资源项目AB
模块B应包含:

dependencies {
  // it must be compile only to prevent it to be exposed as a transitive dependency in the pom file
  compileOnly project(":A")
}

jar {
    from project(':A').sourceSets.main.output
}

然后,当您在B中的类旁边的模块A中的B.jar类中生成一个包含jar任务的jar时,您应该会想到,例如,模块被合并。
分级7.6.0

u3r8eeie

u3r8eeie2#

如果需要在项目B中引用项目A,那么可以在项目B构建时编译项目A,并将其作为依赖项添加到项目B的jar文件中。
settings.gradle文件中的两个项目都包含在根项目中。

include 'project A'
include 'project B'

然后在项目B的build.gradle文件中添加

dependencies{
   compile (':project A')
}

相关问题