我提供的内容低于我目前所拥有的。
在下面的示例中,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',
)
}
}