Gradle:创建一个不可执行的JAR和可执行的Shell脚本,其依赖库作为软件包发行



我不是为Java程序创建脂肪可执行罐的忠实拥护者,因为当我从同一项目中拥有多个可执行程序时,它涉及一个庞大的开销。

我希望能够创建一个类似库的jar并创建相应的.sh脚本,该脚本几乎具有以下结构:

java -cp classpath_libs main_class program_args ...

或任何其他可执行文件,我可以根据需要自定义它,但以类似的方式(例如: hadoop jar project_jar main_class classpath_libs program_args)。这在Gradle中可以实现吗?如果是这样,怎么样?注意,我需要使用单个项目中的不同主要类创建多个脚本。

关键要求是能够使用最终完全分辨的classpath字符串。

更新:我已经看到了使用 application 插件的示例,但它创建了一个可执行的jar,其中包装了依赖的库。这不是我想要的。

据我发现,似乎没有直接处理此操作的插件。因此,我使用了java-library插件,使用了configurations.runtime ClassPath值,并创建了必要的脚本和复制任务,以将必要的库将必要的库复制到必要的目录中。对于有兴趣的任何人,您也可以在application插件中尝试distZip选项,其中Gradle确实创建了脚本以执行并打包分发中的必要库。您可以查看脚本的输出,以查看类路径的结构并创建类似的内容。

最新更新