See You Again

使用Ant构建Java项目

对于一个最简单的hello worldjava程序,运行之前必须经过编译、打包等操作,如果不使用 IDE 的话会十分繁琐,特别是在服务器,全是命令行。像C语言使用 make 进行编译一样,Java可以使用Ant进行构建。

使用Ant前

现在我们要对一个hello world程序打一个jar包,并运行:

  1. mkdir -p build/{classes,jar}
  2. javac -sourcepath src -d build/classes src/demo/HelloWorld.java
  3. jar cfm build/jar/HelloWorld.jar Manifest -C build/classes .
  4. java -jar build/jar/HelloWorld.jar

使用上面的shell脚本,首先新建一个目录,然后编译、打包、运行。可以看到,这些操作比较繁琐,聪明点可能保存到一个 build.sh 里面,每次去运行这个脚本。但是有几个缺点:

使用Ant后

Ant将构建过程抽象成一个个任务,并定义了一套XML语法去管理,看看实现同样效果的 build.xml:

  1. <project name="HelloWorld" basedir="." default="main">
  2. <property name="src.dir" value="src"/>
  3. <property name="build.dir" value="build"/>
  4. <property name="classes.dir" value="${build.dir}/classes"/>
  5. <property name="jar.dir" value="${build.dir}/jar"/>
  6. <property name="main-class" value="demo.HelloWorld"/>
  7. <target name="clean">
  8. <delete dir="${build.dir}"/>
  9. </target>
  10. <target name="compile">
  11. <mkdir dir="${classes.dir}"/>
  12. <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
  13. </target>
  14. <target name="jar" depends="compile">
  15. <mkdir dir="${jar.dir}"/>
  16. <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
  17. <manifest>
  18. <attribute name="Main-Class" value="${main-class}"/>
  19. </manifest>
  20. </jar>
  21. </target>
  22. <target name="run" depends="jar">
  23. <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/>
  24. </target>
  25. <target name="clean-build" depends="clean,jar"/>
  26. <target name="main" depends="clean,run"/>
  27. </project>

可以看出:

其实还有一些功能,例如条件判断、执行shell命令、执行java代码等。

不过在解决问题的同时,也能发现一些缺点:

现在的话,就偏向用 gradle 来构建了,有机会看看 gradle 的处理。

2016-08-29 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑