Java 将shadow插件生成的shadow jar重命名为原始工件名称
我正在使用gradle shadow插件构建我的uber jar build.grade文件如下所示:Java 将shadow插件生成的shadow jar重命名为原始工件名称,java,gradle,shadow,Java,Gradle,Shadow,我正在使用gradle shadow插件构建我的uber jar build.grade文件如下所示: buildscript { repositories { jcenter() } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:2.0.2' } } apply plugin: 'com.github.johnrengelman.shad
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)
它在build/libs文件夹中生成以下jar
myProject-1.0.0-SNAPSHOT.jar
myProject-1.0.0-SNAPSHOT-all.jar '//uber jar
我想用uber jar替换原来的jar。我该怎么做呢?也许在
build.gradle
中禁用jar任务会起作用
apply plugin: 'java'
jar.enabled = false
因此,您将只拥有您的uber jar。不清楚为什么要这样做,但我假设您的意思是“使用原始jar的名称”。你应该做两件事:
jar
任务(或archiveName
,或影响名称的其他属性)指定不同的Classifier,或禁用它,这样您就不会在每次生成时不断覆盖它,避免做不必要的工作shadowJar
任务上更改分类器ShadowJar
任务
tasks.jar.configure{
分类器='default'
}
tasks.shadowJar.configure{
分类器=null
}
您可以这样做:
// save the old jar task
def oldJarTask = tasks.jar
// remove the original jar tasks from the tasks list
tasks.remove(jar)
// create a new task named "jar" thats depends on shadowJar
// when you will run jar task it will be actually run the shadow jar
task jar(dependsOn:[shadowJar])
// create a task to run the plain old good jar task from gradle :)
task oldJar(dependsOn: oldJarTask)
这是测试和工作,希望它能帮助你 以最少的击键次数,而不会造成任何障碍 更换线路:
assemble.dependsOn(shadowJar)
与:
核实:
jar {
enabled = false
dependsOn(shadowJar { classifier = null })
}
$ gradle assemble --console=plain
:compileJava
:processResources NO-SOURCE
:classes
:shadowJar
:jar SKIPPED
:assemble UP-TO-DATE