我有一个基于gradle的独立项目.当我进行gradle构建时,jar在build/libs下生成.如何从命令行运行此可执行jar?我尝试过:java -cp build/libs/foo.jar full.package.classname但是对于导入的类,我得到noClassFoundException.如何将依赖jar作为classpath的一部分?
Eug*_*nov 14
由于问题用gradle标记标记,我假设你想从gradle build运行jar.我还假设您使用java插件进行gradle构建.
在你的gradle中添加下一行:
task runFinalJar(type: JavaExec) {
classpath = files('build/libs/foo.jar')
classpath += sourceSets.main.runtimeClasspath
main = full.package.classname
}
Run Code Online (Sandbox Code Playgroud)
您现在可以将任务包含在构建过程中:
build.dependsOn.add("runFinalJar")
Run Code Online (Sandbox Code Playgroud)
或者只需从命令行运行它:
gradle build runFinalJar
Run Code Online (Sandbox Code Playgroud)
更新如Peter建议的那样使用应用程序插件更清晰
使用应用程序插件创建包含代码,依赖项和启动脚本的存档,或创建可执行的胖Jar.后者不应该以天真的方式完成,而应该使用gradle-one-jar(或类似的)插件.
添加一个简单的任务来运行jar
task runJar(type: JavaExec) {
main = "-jar";
args jar.archivePath
}
Run Code Online (Sandbox Code Playgroud)
我认为答案超出了问题的实际意义。问题是,或者可以重申为,如何运行 gradle 构建的 JAR。
提问者表示,他们已经尝试过java -cp build/libs/foo.jar full.package.classname无济于事。
正确的语法是java -jar build/libs/foo.jar,或者如果 JAR 就在那里,显然它java -jar foo.jar和往常一样。
恕我直言,为了清楚起见,应该编辑问题。
| 归档时间: |
|
| 查看次数: |
28824 次 |
| 最近记录: |