首页 > 解决方案 > 为代码和依赖项创建单独的 shadowJars

问题描述

使用 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

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

标签: gradlebuild.gradle

解决方案


推荐阅读