自動生成 manifest

 
<?xml version="1.0"?>
<project name="LineNotify" default="jar">
 
  <target name="init">
    <property file="build.properties"/>
    <property name="name" value="LineNotify"/>
    <property name="src.dir" value="src"/>
    <property name="lib.dir" value="lib"/>
    <property name="build.dir" value="build"/>
    <property name="build.classes.dir" value="${build.dir}/classes"/>
    <property name="build.dest.dir" value="${build.dir}/dest"/>
    <property name="jar.dir" value="${build.dest.dir}/${name}.jar"/>
    <property name="jar.to.dir" value="${lib.dir}"/>
    <property name="target" value="1.8"/>
    <property name="source" value="1.8"/>
    <property name="encoding" value="UTF-8"/>
 
    <path id="classpath" >
      <fileset dir="${lib.dir}">
        <include name="**/*.jar"/>
      </fileset>
    </path>
 
    <pathconvert property="manifestClassPath" pathsep=" ">
      <mapper>
        <chainedmapper>
          <!--  移除絕對路徑  -->
          <flattenmapper />
          <!--  加上 lib 相對路徑  -->
          <globmapper from="*" to="../lib/*" />
        </chainedmapper>
      </mapper>
      <path refid="classpath" />
    </pathconvert>
 
  </target>
 
  <!-- =================================================================== -->
  <!-- Clean up.                                                           -->
  <!-- =================================================================== -->
  <target name="clean" depends="init">
    <delete dir="${build.classes.dir}"/>
  </target>
 
  <!-- =================================================================== -->
  <!-- Prepares the build directory                                        -->
  <!-- =================================================================== -->
  <target name="build-prepare">
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes.dir}"/>
    <mkdir dir="${build.dest.dir}"/>
  </target>
 
  <!-- ====================================================================== -->
  <!-- Compiles the source directory omitting files depending on jars present -->
  <!-- ====================================================================== -->
  <target name="compile" depends="clean, build-prepare">
    <javac srcdir="${src.dir}" source="${source}" target="${target}" destdir="${build.classes.dir}" debug="on" encoding="${encoding}">
      <classpath refid="classpath"/>
      <exclude name="**/._*"/>
    </javac>
  </target>
 
  
  <target name="jar" depends="init, compile">
 
    <copy todir="${build.classes.dir}">
      <fileset dir="${src.dir}">
        <exclude name="**/*.properties"/>
        <exclude name="**/*.java"/>
        <!--  排除 nls package 的所有内容  -->
        <exclude name="nls/**"/>
      </fileset>
    </copy>
 
    <jar jarfile="${jar.dir}" compress="true" basedir="${build.classes.dir}">
      <!--  動態生成 Class-Path  -->
      <manifest>
        <!--  主程入口  -->
        <attribute name="Main-Class" value="com.ddim.linenotify.job.LineNotifyJob"/>
        <attribute name="Class-Path" value="${manifestClassPath}"/>
      </manifest>
    </jar>
 
  </target>
</project>
 

<?xml version="1.0"?>

<project name="LineNotify" default="jar">

 

  <target name="init">

    <property file="build.properties"/>

    <property name="name" value="LineNotify"/>

    <property name="src.dir" value="src"/>

    <property name="lib.dir" value="lib"/>

    <property name="build.dir" value="build"/>

    <property name="build.classes.dir" value="${build.dir}/classes"/>

    <property name="build.dest.dir" value="${build.dir}/dest"/>

    <property name="jar.dir" value="${build.dest.dir}/${name}.jar"/>

    <property name="jar.to.dir" value="${lib.dir}"/>

    <property name="target" value="1.8"/>

    <property name="source" value="1.8"/>

    <property name="encoding" value="UTF-8"/>

 

    <path id="classpath" >

      <fileset dir="${lib.dir}">

        <include name="**/*.jar"/>

      </fileset>

    </path>

 

    <pathconvert property="manifestClassPath" pathsep=" ">

      <mapper>

        <chainedmapper>

          <!--  移除絕對路徑  -->

          <flattenmapper />

          <!--  加上 lib 相對路徑  -->

          <globmapper from="*" to="../lib/*" />

        </chainedmapper>

      </mapper>

      <path refid="classpath" />

    </pathconvert>

 

  </target>

 

  <!-- =================================================================== -->

  <!-- Clean up.                                                           -->

  <!-- =================================================================== -->

  <target name="clean" depends="init">

    <delete dir="${build.classes.dir}"/>

  </target>

 

  <!-- =================================================================== -->

  <!-- Prepares the build directory                                        -->

  <!-- =================================================================== -->

  <target name="build-prepare">

    <mkdir dir="${build.dir}"/>

    <mkdir dir="${build.classes.dir}"/>

    <mkdir dir="${build.dest.dir}"/>

  </target>

 

  <!-- ====================================================================== -->

  <!-- Compiles the source directory omitting files depending on jars present -->

  <!-- ====================================================================== -->

  <target name="compile" depends="clean, build-prepare">

    <javac srcdir="${src.dir}" source="${source}" target="${target}" destdir="${build.classes.dir}" debug="on" encoding="${encoding}">

      <classpath refid="classpath"/>

      <exclude name="**/._*"/>

    </javac>

  </target>

 

  

  <target name="jar" depends="init, compile">

 

    <copy todir="${build.classes.dir}">

      <fileset dir="${src.dir}">

        <exclude name="**/*.properties"/>

        <exclude name="**/*.java"/>

        <!--  排除 nls package 的所有内容  -->

        <exclude name="nls/**"/>

      </fileset>

    </copy>

 

    <jar jarfile="${jar.dir}" compress="true" basedir="${build.classes.dir}">

      <!--  動態生成 Class-Path  -->

      <manifest>

        <!--  主程入口  -->

        <attribute name="Main-Class" value="com.ddim.linenotify.job.LineNotifyJob"/>

        <attribute name="Class-Path" value="${manifestClassPath}"/>

      </manifest>

    </jar>

 

  </target>

</project>

 

© 2015 版權所有。

Create a website for freeWebnode