我提供的内容低于我目前所拥有的。
在下面的示例中,Jar 任务生成一个 Jar,其中包含一个 Zip 文件(来自另一个项目的工件)。
但是,我的最终目标是制作一个可以自我包含其依赖项的 uber jar。我是通过 Shadow 插件来的,这似乎是一个干净的解决方案。
我试图告诉我的 ShadowJar 任务包含 Zip 文件 - 但它不起作用。请参阅已注释掉的 ShadowJar 部分。
所以,我现在要做的是创建 shadow jar,然后生成另一个 jar,其中包含 shadow jar 和 zip 的内容。我可以看到这条路径充满了陷阱(我不得不再次执行 Manifest)......
理想情况下,我认为有一种方法可以在 Shadow Jar 中包含来自不同配置的工件,而我对 Gradle 知识的限制在这里失败了。
构建脚本 { 存储库 { jcenter() } 依赖{ 类路径'com.github.jengelman.gradle.plugins:shadow:1.1.1' } } 应用插件:'java' 应用插件:'eclipse' 应用插件:'com.github.johnrengelman.shadow' project.version = rootProject.ext.deployerVersion // 在本节中,您声明在哪里可以找到项目的依赖项 存储库{ // 使用 'maven central' 来解决你的依赖。 // 您可以在此处声明任何 Maven/Ivy/文件存储库。 mavenCentral() } 配置{ 包 } // 在本节中,您声明生产和测试代码的依赖项 依赖{ 编译项目(':Concenter.Foundation') pkg 项目(路径:':Concenter.Platform',配置:'pkg') // 为您想要在测试中使用的最喜欢的测试框架声明依赖项。 // Gradle Test 任务也支持 TestNG。只需更改 // testCompile 对 testCompile 'org.testng:testng:6.8.1' 的依赖并添加 // 'test.useTestNG()' 到你的构建脚本。 测试编译'junit:junit:4.11' } 罐子{ 依赖':Concenter.Platform:distZip' 显现 { 属性( '主类': 'aqilco.concenter.deployer.Deployer', ) } 来自配置.pkg } /* 影子罐{ 依赖':Concenter.Platform:distZip' 显现 { 属性( '主类': 'aqilco.concenter.deployer.Deployer', ) } 来自配置.pkg } */ 任务包(类型:罐子){ 依赖':Concenter.Platform:distZip' 依赖'shadowJar' archiveName = jar.baseName + "-" + jar.version + "-pkg." + jar.extension 从 zipTree(shadowJar.archivePath) 来自配置.pkg 显现 { 属性( '主类': 'aqilco.concenter.deployer.Deployer', ) } }