我正在使用gradle shadow插件来构建我的超级jar。
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)
它在build / libs文件夹中生成以下jar。
myProject-1.0.0-SNAPSHOT.jar
myProject-1.0.0-SNAPSHOT-all.jar '//uber jar
我想用超级罐替换原来的jar。我该怎么做?
答案 0 :(得分:6)
目前尚不清楚为什么要这样做,但我假设你的意思是“用原来的JAR的名字”。你应该做两件事:
答案 1 :(得分:5)
也许在build.gradle
中禁用jar任务可以正常工作
apply plugin: 'java'
jar.enabled = false
所以你只有你的超级罐。
答案 2 :(得分:5)
至少击键,不烧任何桥梁,
替换行:
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
答案 3 :(得分:3)
你可以这样做:
// 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)
经过测试和工作,希望它对你有帮助!