为代码和依赖项创建单独的shadowJars

时间:2018-12-21 06:08:36

标签: gradle build.gradle

使用gradle shadowJar插件版本4.0.2和gradle 4.10,我想创建两个单独的shadowJars,一个用于我的源代码,另一个用于我的依赖项(因为依赖项很大,很少更改,所以我不想重新打包它们每次更改源代码时)。我想到的是有一个gradle插件,该插件添加了两个单独的任务,并采用了用户为shadowJar提供的相同配置,并覆盖了用于创建shadowJar的配置/源。

以下是我到目前为止所获得的,仍然试图找出一种仅通过一次阴影配置的干净方法,以及是否有其他我需要担心的问题(例如:有两个mergeServiceFiles会中断等等)

import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

task dependencyShadowJar(type: ShadowJar) {
 mergeServiceFiles()
 zip64 = true
 relocate 'com.google.common', 'com.shadow.com.google.common'
 classifier = 'dependencies'
 configurations = [project.configurations.runtime]
}

task userCodeShadowJar(type: ShadowJar) {
 mergeServiceFiles()
 zip64 = true
 relocate 'com.google.common', 'com.shadow.com.google.common'
 classifier = 'mycode'
 from sourceSets.main.output
}

task splitShadowJar {
 doLast {
    println "Building separate src and dependency shadowJars"
 }
}

splitShadowJar.dependsOn dependencyShadowJar
dependencyShadowJar.dependsOn userCodeShadowJar
  • 理想情况下,我想一次指定一次shadowJar设置,并且任务复制相同的设置,这是否需要在groovy中创建自定义插件任务?
  • 我可以从用户指定的现有shadowJar中复制设置,并且仅出于我的目的而覆盖fromconfigurations部分

有人尝试过类似的事情吗?

0 个答案:

没有答案