java ant知识的一点积累

最近在搞一个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,

真诚期待留言

 

你可能感兴趣的:(ant)