Как создать исполняемую жировую банку с Gradle с зависимостями реализации
У меня есть простой проект в Gradle 4.6 и вы хотите сделать его исполняемым банком. Я пробовал shadow
gradle-fatjar-plugin
, gradle-fatjar-plugin
, gradle-one-jar
spring-boot-gradle-plugin
плагинами spring-boot-gradle-plugin
но ни один из них не добавляет мои зависимости, объявленные как implementation
(у меня нет compile
). Он работает с compile
например, для gradle-one-jar
но я хотел бы иметь зависимости от implementation
.
Большое спасибо!
Ответы
Ответ 1
Вы можете использовать следующий код.
jar {
manifest {
attributes(
'Main-Class': 'com.package.YourClass'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
Обязательно замените com.package.YourClass
на полное имя класса, содержащее static void main( String args[] )
.
Это упакует зависимости времени выполнения. Проверьте документы, если вам нужна дополнительная информация.
Ответ 2
Та же задача может быть достигнута с помощью Gradle Kotlin DSL аналогичным образом:
val jar by tasks.getting(Jar::class) {
manifest {
attributes["Main-Class"] = "com.package.YourClass"
}
from(configurations.runtime.map { if (it.isDirectory) it else zipTree(it) })
}