Netbeans的打包,编译过程都是通过ant实现的,和普通的ant target没什么区别,只是由于和netbeans结合之后,需要有一点点注意的地方,详述如下:
1.组织结构
netbeans工程下的Build.xml就是打包的ant脚本了,这里面又导入了nbproject/build-impl.xml,实际的打包,编译,清理的方法都在build-impl.xml中实现。
2.netbeans所需要的几个特定的target
执行netbeans清理和生成的时候发生了什么呢?
当清理的时候,netbeans会自动执行build-impl.xml中名为clean的target,执行生成的时候会执行名为jar的target。这是定制netbeans打包过程的关键所在,只要修改这两个方法就可以让netbeans做我们希望它做的事情了。
3.一个小例子
下面通过一个小例子来讲述
我做了一个很简单的工程,这个工程里没有源码,只有一些html,图片,css和js,我希望每次生成的时候都会把这些内容压缩成jar文件,就这么个小功能。
<?xml version="1.0" encoding="UTF-8"?>
<project name="common-jars-documents" default="default" basedir=".">
<!--输出目录-->
<property name="output.dir" value="${basedir}/dist"/>
<property name="src.dir" value="${basedir}/src" />
<!--编译输出目录-->
<property name="build.classes.dir" value="${basedir}/build/classes"/>
<!--所有文件及目录-->
<property name="includes" value="**"/>
<property name="excludes" value=""/>
<!--打包target,依赖于清理和编译target-->
<target name="jar" depends="clean, build">
<echo message="开始打包,文档会打包到${output.dir}目录下,请稍后......" />
<jar jarfile="${output.dir}/project.jar" basedir="${build.classes.dir}">
<include name="**" />
</jar>
</target>
<!--清理target-->
<target name="clean">
<delete dir="${build.classes.dir}"/>
<delete file="${output.dir}/project.jar"/>
<echo message="清理完成" />
</target>
<!--编译target,依赖于clean方法-->
<target name="build" depends="clean">
<mkdir dir="${build.classes.dir}" />
<copy todir="${build.classes.dir}">
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}"/>
</copy>
<echo message="文档编译完成" />
</target>
<!--主工程,通过project标签的default属性声明-->
<target name="default">
<!--调用清理target-->
<antcall target="clean" />
<!--调用编译target-->
<antcall target="build" />
<!--调用打包target-->
<antcall target="jar" />
</target>
</project>
现在可以在Netbeans的右键菜单里执行清理和生成来产生打包文件了。