最近在搞一个Linux打包java项目的工具,编译工具采用的ant,积累了一点关于ant的微薄的经验,记录一下。
1. 默认情况下,使用ant命令会在当前的路径下寻找build.xml,根据里面的配置进行打包,当然我们也可以指定自定义的.xml文件进行打包,主要可以通过以下的三种模式
ant -buildfile mybuild.xml
ant -file mybuild.xml
ant -f mybuild.xml
2. 含有第三方jar包,并将其一起打包到目标jar包中
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="Test Project" name="Test Project">
<!--ANT 1.7 is required -->
<property name="releaseBase" value="/usr/local/build" />
<!--
指定javac 编译环境的版本
默认情况下yum install ant方式关联的jdk是open-jdk
-->
<property name="javac" value="/usr/local/jdk1.6.0_37/bin/javac" />
<!-- module -->
<property name="testBase" value="${releaseBase}/src/TestProject" />
<!--
创建需要的文件夹
dist目录为编译好的jar包存放的位置
bin目录为编译时class文件存放的位置
-->
<mkdir dir="${releaseBase}/dist"/>
<target name="TestProject">
<delete dir="${releaseBase}/bin" />
<mkdir dir="${releaseBase}/bin" />
<!--
直接将svn命令集成到build文件中,无需再手动更新代码
前期需要yum install svn
-->
<exec dir="${testBase}" executable="svn">
<arg line="update" />
</exec>
<!--
将相关的配置文件copy到bin目录下
-->
<copy todir="${releaseBase}/bin">
<fileset dir="${testBase}/src">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
<path id="lib-classpath">
<fileset dir="${testBase}/libs">
<include name="**/*.jar"/>
</fileset>
</path>
<!--
编译代码,指定java的编译环境
classpathref: 文件夹中class文件会被引用的jar包
fork: 为true时在外部启用一个新的JDK编译器进程执行编译。默认值是true,应用在需要配置编译器运行时环境时
-->
<javac executable="${javac}" srcdir="${testBase}" destdir="${releaseBase}/bin" fork="true" >
<compilerarg line="-encoding UTF-8"/>
<classpath refid="lib-classpath"/>
</javac>
<!--
生成Jar包(第三方包达到生成的Jar包中)
-->
<jar destfile="${releaseBase}/dist/TestProject.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="com.test.TestMain"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="${releaseBase}/bin"/>
<zipfileset excludes="META-INF/*.SF" src="${testBase}/libs/commons-beanutils.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${testBase}/libs/commons-collections.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${testBase}/libs/commons-lang.jar"/>
<zipfileset excludes="META-INF/*.SF" src="${testBase}/libs/commons-logging.jar"/>
</jar>
</target>
</project>
哪位高手知道,如何在zipfileset标签中设置通配符,这样只要一行代码类似*.jar就可以导入所有第三方jar,
真诚期待留言