之前我是通过Eclipse的“导出”功能创建可运行的JAR文件,但现在我已经切换到了IntelliJ IDEA和Gradle用于构建自动化。
这里有一些文章建议使用“应用程序”插件,但这并没有完全达到我期望的结果(只是一个JAR文件,没有启动脚本或类似的东西)。
如何才能达到与Eclipse的“导出”对话框相同的结果?
之前我是通过Eclipse的“导出”功能创建可运行的JAR文件,但现在我已经切换到了IntelliJ IDEA和Gradle用于构建自动化。
这里有一些文章建议使用“应用程序”插件,但这并没有完全达到我期望的结果(只是一个JAR文件,没有启动脚本或类似的东西)。
如何才能达到与Eclipse的“导出”对话框相同的结果?
以下是我尝试使用Gradle 6.7的解决方案
可运行的fat Jar(将所有依赖库复制到jar中)
task fatJar(type: Jar) {
manifest {
attributes 'Main-Class': 'com.example.gradle.App'
}
from {
configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
} with jar
}
将所有依赖项复制到目录并将类路径添加到清单文件中的可运行jar包
def dependsDir = "${buildDir}/libs/dependencies/"
task copyDependencies(type: Copy) {
from configurations.compile
into "${dependsDir}"
}
task createJar(dependsOn: copyDependencies, type: Jar) {
manifest {
attributes('Main-Class': 'com.example.gradle.App',
'Class-Path': configurations.compile.collect { 'dependencies/' + it.getName() }.join(' ')
)
}
with jar
}
如何使用?
gradle fatJar
//创建fatJargradle createJar
//创建包含依赖项的jar文件。更多详情:https://jafarmlp.medium.com/a-simple-java-project-with-gradle-2c323ae0e43d
如果您正在使用Gradle项目,只需将以下内容添加到您的build.gradle文件中即可:
jar {
manifest {
attributes(
'Main-Class': 'pokerhandscorer.PokerHandScorer'
)
}
}
这将在\build\libs目录下创建一个jar文件:{jarFilename}.jar
java -jar /{path}/{jarFileName.jar}