java - 如何从终端创建可执行 jar 文件

标签 java ant

如何从 java 源代码正确构建 java .jar 文件。经过一些研究,构建工具 ant 似乎被认为是配置庄园的最佳实践之一,其中 .java 源文件构建到 .class 文件中,并最终存储在 .jar 文件中。

对于我的项目文件夹,我基本上将 .java 源代码放在 src/classes/HelloWorld.java 中,我将 build.xml 文件放在根目录中。

除了 build.xml 文件中用于指定程序入口点的指令之外,我似乎一切正常。就目前而言,它会导致:

<attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/> 

但我希望它能够引导到我的 src/HelloWorld.java 文件中的 main 方法。

最佳答案

有关使用 ant 的更完整(但基本)的教程可在 ant 的 website 处找到。 。

首先,您需要一个开发环境设置,其中包含用于编译 .java 文件的 javac 和用于编写构建过程脚本的 ant。对于某些操作系统,它就像运行 $ sudo apt-get install ant openjdk-7-jdk 等命令一样简单,但其他操作系统则希望搜索更具体的内容。

您的目录结构应如下所示:

.
├── build.xml
├── README.md
├── src
    └── hello
        └── HelloWorld.java

您的 Hello World 源代码应如下所示(在 HelloWorld.java 中)

// This line is important and tells java that this code is a package of 
// code named 'hello'
package hello; 

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

改编后的 build.xml 文件会像这样(尽管包含未使用的元素):

<?xml version="1.0"?>
<project basedir="." default="build">
  <property name="src.dir" value="src"/>
  <property name="web.dir" value="war"/>
  <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
  <property name="name" value="hello"/>

  <path id="master-classpath">
    <fileset dir="${web.dir}/WEB-INF/lib">
      <include name="*.jar"/>
    </fileset>
    <pathelement path="${build.dir}"/>
  </path>

  <target name="build" description="Compile source tree java files">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${web.dir}/WEB-INF/lib"/>
    <javac includeantruntime="false" destdir="${build.dir}" source="1.5" target="1.5">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
    </javac>
  </target>

  <target name="clean" description="Clean output directories">
    <delete dir="war"/>
  </target>

  <target name="build-jar" depends="build">
    <jar destfile="${web.dir}/lib/hello.jar"
         basedir="${build.dir}"
         includes="**"
         excludes="**/Test.class">

      <manifest>
        <attribute name="Main-Class" value="hello.HelloWorld"/>
      </manifest>

    </jar>
  </target>

</project>

从那里开始,就像从命令行构建项目一样简单

$  ant clean
$  ant build-jar

关于java - 如何从终端创建可执行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29882141/

相关文章:

java - LibGDX 中的多个敌人阵列

java - 如何在不使用 ping.exe 的情况下使用 Windows 上的 Java 一次发送多个 ping?

ant - 如何在命令行中执行 Ant build

java - 运行文本文档。在cmd中具有多个java类

java - Jsoup 解析器仅针对特定 URL 无法按预期工作

JavaFX如何将新的FXML内容注入(inject)到当前场景

java - 在执行试图中断线程(并失败)并继续执行的 Java 程序后,如何阻止 Ant 挂起?

ant - 使 Ant <modified> 选择器正常工作

java - JavaFX 应用程序的 ANT JAR 文件

java - 单元测试仅在使用 Ant 任务运行时失败