4

我提供的内容低于我目前所拥有的。

在下面的示例中,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',
             )
        }
    }

4

0 回答 0