gradle - 为代码和依赖项创建单独的 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
- 理想情况下,我希望指定一次 shadowJar 设置,并且任务复制相同的设置,这是否需要在 groovy 中创建自定义插件任务?
- 我可以从用户指定的现有 shadowJar 中复制设置,并仅为我的目的单独覆盖
from
or部分吗configurations
有人尝试过类似的事情吗?
解决方案
推荐阅读
- c# - 如何替换 HTML 内容?
- javascript - 通过其他数组查找数组中最接近的值
- python - 尝试从浏览器将图像上传到 s3 时签名不匹配
- c# - 以编程方式创建新 DocumentSet [SharePoint] 时出现异常
- php - PHP:通过身份验证连接到 DHL ELP 网络服务
- ios - 如何切换到另一个与当前共享相同根控制器的视图控制器?
- git - Git push 在 PhpStorm 中不起作用,而在 Tortoise 中 git 工作得很好
- c# - WPF White框架访问自定义控件上的自定义属性
- javascript - 有没有更快的方法在 namesArray 中查找任何名称?
- javascript - 是否可以将列表中的值添加到输入表单字段?