如何使用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
文件中引导主要方法。
答案 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> </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>