我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar。我试过shadow
,gradle-fatjar-plugin
,gradle-one-jar
,spring-boot-gradle-plugin
插件,但他们都没有增加我的依赖性声明implementation
(我没有任何compile
的)。它适用于compile
例如gradle-one-jar
插件,但我希望有implementation
依赖关系。
非常感谢你!
您可以使用以下代码。
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[] )
。
这将打包运行时依赖项。如果需要更多信息,请检查文档。
根据公认的答案,我需要再添加一行代码:
task fatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'com.yourpackage.Main'
}
archiveClassifier = "all"
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
with jar
}
如果没有此附加行,它将省略我的源文件,而仅添加依赖项:
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
使用Gradle Kotlin DSL以类似的方式可以完成相同的任务:
val jar by tasks.getting(Jar::class) {
manifest {
attributes["Main-Class"] = "com.package.YourClass"
}
from(configurations
.runtime
// .get() uncomment this on Gradle 6+
// .files
.map { if (it.isDirectory) it else zipTree(it) })
}
from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
这条线对我来说至关重要。
Kotlin 1.3.72和JVM插件Gradle 6.5.1
在所有这些平台中,语法都在快速变化
tasks {
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
val main = sourceSets.main.get()
//TODO
register<Jar>("buildFatJar") {
group = "app-backend"
dependsOn(build)
// shouldRunAfter(parent!!.tasks["prepCopyJsBundleToKtor"]) -> This is for incorporating KotlinJS gradle subproject resulting js file.
manifest {
attributes["Main-Class"] = "com.app.app.BackendAppKt"
}
from(configurations.compileClasspath.get().files.map { if (it.isDirectory) it else zipTree(it) })
with(jar.get() as CopySpec)
archiveBaseName.set("${project.name}-fat")
}
}
本文地址:http://java.askforanswer.com/ruheshiyongjuyoushixianyilaixiangdegradlechuangjiankezhixingwenjianpangzi.html
文章标签:executable-jar , fatjar , gradle , gradle-plugin , java
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
文章标签:executable-jar , fatjar , gradle , gradle-plugin , java
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!
评论已关闭!