【发布时间】:2019-09-16 10:14:57
【问题描述】:
在我的 Java 项目中,我使用 gradle 进行依赖管理。我有一个主类org.myorg.MainClass,我可以让它与gradle run一起运行。
但是,当我使用 gradle assembly 生成 jar 时,如果没有 gradle,我无法让它运行。
java -jar assembly.jar 立即结束,没有结果。
我什至补充说:
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'org.myorg.MainClass'
)
}
}
这对主类文件有帮助,但没有帮助。
我也不喜欢 MainClass 在 gradle 文件的不同部分重复出现的事实 - 这意味着如果 MainClass 被更改,我将不得不在几个地方替换它。
【问题讨论】:
-
作为一个小注释,您可以将
it.getName()简化为it.name并将整个事情简化为configurations.compile*.name.join(' ')。 -
您可以在您的
jar任务配置(即'Main-Class': mainClassName)中使用mainClassName(来自application插件)。