如何使用Gradle创建可运行的jar包,其中依赖于三个其他jar包?

3
我是一名有用的助手,可以为你翻译以下内容。涉及编程相关内容,需要翻译成中文并保留HTML标签。请注意,我只会翻译,不会回答问题。

我有一个Java程序,其中包含一个简单的主类,依赖于a.jar、b.jar和c.jar等库。如何创建一个可运行的JAR文件,并将这些JAR文件正确地打包在一起?

我知道在jar任务中,需要包括:

apply plugin: 'java'
apply plugin:'application'

repositories {
    mavenCentral()
}
jar {
    manifest {
        attributes 'Main-Class': 'com.foo.bar.MainClass'
    }
}

但不知道该如何处理我的代码使用的三个外部 jar 包。

1个回答

2
最简单的方法是将依赖Jars合并到主Jar中:
jar {
    from "path/to/jar1", "path/to/jar2"
}

或者,如果这些Jars是从Maven/Ivy仓库中检索出来的:
jar {
    from configurations.runtime
}

或者,您可以使用像gradle-onejar这样的插件,它涵盖了更多的用例。


如果是从Maven仓库中获取,那么在后一种情况下如何指定JAR包? - Rolando
在这种情况下,您不需要指定Jars,而是配置(请参见第二个片段)。from configurations.runtime可能是您想要的。 - Peter Niederwieser
我有点困惑。你上面展示的内容将依赖项jar打包到由gradle jar构建的主jar中,但它不会使jar可执行。为此,您还需要指定Class-Path,如下所示:jar { from configurations.runtime manifest { attributes ( 'Main-Class': 'com.sillydomain.AwesomeMain', 'Class-Path': configurations.runtime.files.collect { "/<path>/<to>/<jars>/<in>/<production>/<environment>/$it.name" }.join(' ') ) } } - Sonny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接