【问题标题】:How to automatically create batch / shell scripts to run a Java console application?如何自动创建批处理/shell 脚本来运行 Java 控制台应用程序?
【发布时间】:2016-05-30 13:53:26
【问题描述】:

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

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

我只找到了部分答案here

但我还没有找到任何东西可以完成每个构建所涉及的基本而微不足道的任务。

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

【问题讨论】:

    标签: java ant maven batch-file sh


    【解决方案1】:

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

    【讨论】:

    • 谢谢!蚂蚁有这样的东西吗?
    • 这非常有效 - 还将所有依赖项放在脚本引用的位置
    • 这似乎只允许你指定主类,而不是一个已经有一个指定主类的manfiest的jar文件。
    【解决方案2】:

    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
    

    【讨论】:

    • 谢谢,有 ANT 解决方案吗?最好的办法是使用 Eclipse 类路径,但我感觉行业/社区确实倾向于 Maven,也许我也应该这样做...... Gradle 怎么样?
    【解决方案3】:

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

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

    【讨论】:

    • 这是一个不错的选择。但我想保持它基于脚本
    【解决方案4】:

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

    我希望它会帮助其他人。

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 2011-08-20
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 2015-11-16
      • 2013-02-11
      • 2014-03-17
      • 2011-09-05
      相关资源
      最近更新 更多