如何自动创建批处理/ shell脚本以运行Java控制台应用程序?

我有一个Java命令行应用程序,并且想要创建一个Ant *构建脚本,该脚本将创建所有必需的批处理/ shell脚本以成功运行应用程序,包括所有类路径变量。 我需要它来做以下事情:

  1. 为Linux / Unix创建一个shell脚本文件,为Windows / DOS创建一个批处理文件
  2. 添加所有类路径依赖项(来自Maven或只是在Eclipse中使用构建路径)
  3. 添加任何必要的样板sh / bat代码来运行(ENV变量,JAVA_HOME等)

我在这里只找到了部分答案。

但是我没有发现任何能够完成每个构建所涉及的基本和微不足道的任务。

免责声明 – 最初的问题是Ant / Maven,但我更愿意看看它是否可以在Ant中完成。

在Maven中,最好的解决方案是maven-appassembler-plugin ,它处理shell脚本/批处理文件的创建。 结合maven-assembly,您可以创建一个tar.gz或zip存档,其中包含所需的所有内容。

Maven知道dependency:build-classpath目标,它完成大部分脏工作:

 mvn dependency:build-classpath -DoutputFile=cp.txt 

您可以在shell脚本中使用此生成的文件来创建java类路径(我知道,它并不多,但它会让您入门)。

或者您可以使用exec-maven-plugin从当前maven上下文启动主类。 这样的事情会做:

 mvn compile org.codehaus.mojo:exec-maven-plugin:1.2:java \ -Dexec.mainClass=com.yourcompany.YourClass 

一种方法是为Java应用程序使用二进制可执行构建器。 其中一些可以通过提供的ant任务从ant启动。

例如, exe4j可以为命令行应用程序创建可执行文件,并支持Windows,Linux和Mac。 可执行文件包装Java代码,其类路径和JVM搜索路径。 自定义ant任务“com.exe4j.Exe4JTask”支持从exe4J配置生成可执行文件 – 可以使用友好向导创建。

Apache commons Launcher为您创建启动脚本。 将生成Windows和Linux脚本。 它也可以与Ant集成。

我希望它会帮助别人。