将shadow插件生成的阴影jar重命名为原始工件名称

use*_*796 10 java shadow gradle

我正在使用gradle shadow插件来构建我的超级罐.

build.grade文件看起来像:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2'
    }
}

apply plugin: 'com.github.johnrengelman.shadow'


dependencies {
   compile "com.amazonaws:aws-lambda-java-events:1.3.0"

}

assemble.dependsOn(shadowJar)
Run Code Online (Sandbox Code Playgroud)

它在build/libs文件夹中生成以下jar.

myProject-1.0.0-SNAPSHOT.jar
myProject-1.0.0-SNAPSHOT-all.jar '//uber jar
Run Code Online (Sandbox Code Playgroud)

我想用超级罐替换原来的罐子.我该怎么做呢?

mko*_*bit 6

目前尚不清楚为什么要这样做,但我假设你的意思是"用原来的JAR的名字".你应该做两件事:

  1. jar任务(或者archiveName,或者影响名称的其他属性)提供不同的分类,或者禁用它,这样就不会在每次构建时不断覆盖它,避免做不必要的工作
  2. 更改shadowJar任务上的分类器

ShadowJar从摇篮内置扩展Jar所以大部分从配置选项适用于任务,ShadowJar任务.

tasks.jar.configure {
  classifier = 'default'
}

tasks.shadowJar.configure {
  classifier = null
}
Run Code Online (Sandbox Code Playgroud)


Eug*_*e S 5

也许禁用jar任务build.gradle将起作用

apply plugin: 'java'
jar.enabled = false
Run Code Online (Sandbox Code Playgroud)

所以你只有你的超级罐子.


Fun*_*unk 5

至少要进行击键,而又不烧任何桥,

替换行:

assemble.dependsOn(shadowJar)
Run Code Online (Sandbox Code Playgroud)

与:

jar {
    enabled = false
    dependsOn(shadowJar { classifier = null })
}
Run Code Online (Sandbox Code Playgroud)

校验:

$ gradle assemble --console=plain
:compileJava
:processResources NO-SOURCE
:classes
:shadowJar
:jar SKIPPED
:assemble UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)