如何使用Gradle生成可执行的.sh文件?

时间:2017-01-18 05:38:33

标签: java linux eclipse gradle build.gradle

我在Eclipse中有一个Java项目。它工作正常,我可以使用java -jar sample-app.jar

从cmd运行它

我现在必须使用Gradle生成可在Linux中使用的可执行sh文件。 我已经找到了一些创建启动脚本的资源,但我设法做的最多就是使用标准的'startScripts'任务创建一个sample.app.bat文件。

我一直在搜索问题并逐页搜索谷歌试图找到答案,我没有太多运气。我也多次阅读Gradle应用程序插件文档,但仍然很困惑。

如何编写Gradle任务来生成sh文件以执行我的sample-app.jar文件?

注意: sample-app.bat文件没有执行。它只生成一个“错误:无法找到或加载主类com.sample.MainClass

2 个答案:

答案 0 :(得分:2)

似乎提到的application插件正是您所寻找的。 Here你可以找到一个小小的演示。现在要运行主类,您需要运行gradle run。要准备 sh bat 脚本,请运行gradle gradle startScripts。要准备可运行(且易于复制)的应用程序版本并启动脚本,请运行gradle distZipgradle distTar。这两个任务都将准备和归档,可以提取到给定目录并使用准备好的脚本运行。最后一个任务gradle installDist将在给定目录中准备脚本和可执行jar,但不打包它们。

使用dist*installDiststartScripts创建的所有工件都可以在build目录下找到。尝试运行:

gradle clean distZip distTar installDist

然后tree -a build查看所有准备好的文件。

要从准备好的jar运行主类,请记住在正确的目录中执行shell脚本,例如:build/install/lol/bin

答案 1 :(得分:1)

有一种标准的Gradle方式如何做到这一点。您必须通过

开始gradle.build
apply plugin: 'application'

之后,您可以启动distTardistZipinstallZip任务。 (它们位于distribution任务文件夹中)。他们每个人都在你的项目中创建build/scripts文件夹,并将windows和Linux脚本放在那里。此外,他们创建tar / zip /文件夹安装 - 查看distribution插件。

注意,您不需要应用distribution插件 - 它已经在'application'插件中。 startScripts插件位于distribution插件中。

但情况并不是那么好。第二个问题是生成的脚本很糟糕。至少适用于Windows。因此,您必须手动编辑它们,或者在startScripts中插入的脚本中自动执行该过程。它看起来如此:

startScripts {
    doLast {
         your script editing lines here. 
    }
}