如何从终端

时间:2015-04-26 19:03:50

标签: 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文件中引导主要方法。

1 个答案:

答案 0 :(得分:1)

ant website提供了一个更完整(但基本)的使用ant的教程。

首先,您需要一个开发环境设置,其中包含用于编译.java文件的javac以及用于编写构建过程脚本的ant。对于某些操作系统,它就像运行for (int i = 0; i < Model.categories.Count(); i++) { @Html.CheckBoxFor(m => m.categories[i].Checked)<i>&nbsp</i> @Model.categories[i].Title <br/> } 之类的命令一样简单,但其他操作系统则希望搜索更具体的命令。

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

$ sudo apt-get install ant openjdk-7-jdk

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

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

一个改编的build.xml文件会喜欢这个(虽然包含未使用的元素):

// 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!");
    }
}

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

<?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>