【问题标题】:Gradle: Create a non-executable jar and executable shell script with dependent libraries as a package distributionGradle:使用依赖库创建不可执行的 jar 和可执行的 shell 脚本作为包分发
【发布时间】:2019-03-11 17:06:14
【问题描述】:

我不喜欢为 java 程序创建胖可执行 jar,因为当我有来自同一个项目的多个可执行程序时,它会产生巨大的开销。

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

java -cp classpath_libs main_class program_args...

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

这里的关键要求是能够使用最终完全解析的类路径字符串。

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

【问题讨论】:

    标签: java shell gradle executable


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2022-01-05
      • 2014-04-18
      相关资源
      最近更新 更多