Переименовать теневую банку, созданную плагином тени, в оригинальное имя артефакта
Я использую плагин 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.shadow'
dependencies {
compile "com.amazonaws:aws-lambda-java-events:1.3.0"
}
assemble.dependsOn(shadowJar)
Он производит следующие файлы в папке build/libs.
myProject-1.0.0-SNAPSHOT.jar
myProject-1.0.0-SNAPSHOT-all.jar '//uber jar
Я хочу заменить оригинальную банку на банку Uber. Как мне это сделать?
4 ответа
Непонятно, почему вы хотите это сделать, но я предполагаю, что вы имеете в виду "с оригинальным именем JAR". Вы должны сделать 2 вещи:
- Дайте другой классификатор
jar
задание (илиarchiveName
или другие свойства, которые влияют на имя) или отключите его, чтобы вы не перезаписывали его при каждой сборке и не выполняли ненужную работу - Изменить классификатор на
shadowJar
задача
ShadowJar
простирается от встроенного Gradle Jar
задача, поэтому большинство параметров конфигурации из этого относятся к ShadowJar
задача.
tasks.jar.configure {
classifier = 'default'
}
tasks.shadowJar.configure {
classifier = null
}
Для наименьшего количества нажатий клавиш, не сжигая мосты,
заменить строку:
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
Возможно отключение задачи jar в build.gradle
буду работать
apply plugin: 'java'
jar.enabled = false
Таким образом, вы будете иметь только свой Uber Jar.
Вы можете сделать это следующим образом:
// 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)
Это было проверено и сработало, надеюсь, это помогло вам!