没有gradle的`gradle run`

问题描述 投票:0回答:1

在我的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被更改,我将不得不在几个地方替换它。

java gradle
1个回答
1
投票

您的主要问题可能是您的依赖项未被引入可执行的Jar文件,并且运行时无法在执行代码时找到它们。我只是根据你如何表达你的问题进行推测。

如果我是正确的,那么我认为你现在最好的选择是使用Shadow Jar插件(https://imperceptiblethoughts.com/shadow/introduction/

Shadow是一个Gradle插件,用于将依赖类和资源与项目组合到一个输出Jar中。组合的Jar通常被称为胖罐或超级罐。 Shadow利用JarInputStream和JarOutputStream有效地将依赖库处理到输出jar中,而不会产生将jar扩展到磁盘的I / O开销。

© www.soinside.com 2019 - 2024. All rights reserved.