Java `gradle run`没有gradle
在我的Java项目中,我使用gradle进行依赖关系管理。我有一个主类Java `gradle run`没有gradle,java,gradle,Java,Gradle,在我的Java项目中,我使用gradle进行依赖关系管理。我有一个主类org.myorg.MainClass,我可以让它与gradlerun一起运行 然而,当我使用gradleassembly生成jar时,如果没有gradle,我无法让它运行 java-jar assembly.jar立即结束,没有结果 我甚至补充说: jar { manifest { attributes( 'Class-Path': configurations.com
org.myorg.MainClass
,我可以让它与gradlerun
一起运行
然而,当我使用gradleassembly
生成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被更改,我将不得不在几个地方替换它。您的主要问题可能是您的依赖项没有被引入到可执行Jar文件中,并且运行时在执行代码时找不到它们。我只是根据你如何提出你的问题来推测 如果我是正确的,那么我认为您现在最好的选择是使用Shadow Jar插件() Shadow是一个Gradle插件,用于将依赖类和资源与项目的资源组合到单个输出Jar中。组合罐通常指胖罐或优步罐。Shadow利用JarInputStream和JarOutputStream有效地将依赖库处理到输出jar中,而不会产生将jar扩展到磁盘的I/O开销
作为一个小提示,您可以将
it.getName()
简化为it.name
,并将整个过程简化为配置。编译*.name.join(“”)
。您可以在jar
任务配置(即'Main-Class':mainClassName
)中使用mainClassName
(从应用程序
插件)。