waysun一路陽光

          不輕易服輸,不輕言放棄.--心是夢的舞臺,心有多大,舞臺有多大。踏踏實實做事,認(rèn)認(rèn)真真做人。

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            167 隨筆 :: 1 文章 :: 64 評論 :: 0 Trackbacks

          弄了好久的ant打包終于明白了,貼出來大家分享。
          <?xml version="1.0" encoding="UTF-8"?>
          <project name="gpdi" basedir="." default="deploy">
           <!-- Properties and Paths -->
           <property name="dir.java.src" value="src" />
           <property name="dir.java.build" value="defaultroot/WEB-INF/classes" />
           <property name="dir.lib" value="lib" />
           <property name="dir.deploy" value="deploy" />

           <property name="file.manifest" value="manifest.txt" />

           <property name="file.jar" value="gpdi.jar" />
           <!-- Just to fool the test -->
           <property name="gpdi.root" value="." />
              <!-- 排除java源文件的模式集 -->
              <patternset id="no.java">
                  <exclude name="**/*.java" />
              </patternset>
           <path id="project.class.path">
            <pathelement location="${dir.java.build}"/>
            <fileset dir="${dir.lib}" id="lib.path">
             <include name="**/*.jar"/>
            </fileset>
             
           </path>
           
              <!-- 初始化,建立目錄,復(fù)制文件 -->
           
              <target name="init" depends="clean" description="初始化,建立目錄,復(fù)制文件">

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

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

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

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

                          <patternset refid="no.java" />

                      </fileset>

                  </copy>

              </target>
           
              <!-- 清理,刪除臨時目錄 -->
           
              <target name="clean" description="清理,刪除臨時目錄">

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

                  <delete dir="${dir.dist}" />

                  <echo level="info">清理完畢</echo>

              </target>
           
           <!-- 編譯源文件-->

           <target name="compile" 
            
            depends="init" 
            
            description="編譯源文件">
            
            <javac srcdir="${dir.java.src}"
             
             destdir="${dir.java.build}"
             
             deprecation="off"
             
             debug="off"
             
             encoding="gbk"
             
             source="1.5" 
             
             target="1.5">
             
             <classpath refid="project.class.path"/>
             
            </javac>
            
           </target>

              <!-- 創(chuàng)建清單文件 -->

              <target name="create.manifest" description="創(chuàng)建清單文件">
                  <manifest file="${dir.java.src}/${file.manifest}">
                      <attribute name="Built-By" value="${user.name}" />
                      <attribute name="Main-Class" value="com.mfsoft.net.task.TaskJob" />
                      <attribute name="Class-Path" value="lib/log4j-1.2.9.jar lib/classes12.jar lib/joone-engine.jar" />
                  </manifest>

              </target>

              <!-- 打包類文件 -->
           
              <target name="deploy" depends="create.manifest" description="打包類文件">
                  <mkdir dir="${dir.deploy}" />
                  <mkdir dir="${dir.deploy}/log" />
                  <jar jarfile="${dir.deploy}/${file.jar}" manifest="${dir.java.src}/${file.manifest}">
                      <fileset dir="${dir.java.build}" includes="db.properties,config.properties,log4j.properties,com/mfsoft/net/task/*.class,com/mfsoft/credit/modelmang/operation/*.class,
                      com/mfsoft/net/datatranslate/*.class,com/mfsoft/net/pre/*.class,com/mfsoft/icity/platform/database/*.class,com/mfsoft/icity/platform/datashare/*.class,
                      com/mfsoft/icity/platform/publicclass/*.class,com/mfsoft/credit/viable/*.class" />            
                  </jar>  
            <!--復(fù)制用到的庫以及其他文件 -->
          <mkdir dir="${dir.deploy}/lib"/>
          <copy todir="${dir.deploy}/lib">
           <fileset dir="defaultroot/WEB-INF/lib" includes="classes12.jar,joone-engine.jar,log4j-1.2.9.jar"/>
          </copy>  
          <mkdir dir="${dir.deploy}/model"/> 
          <copy todir="${dir.deploy}/model">
           <fileset dir="defaultroot/WEB-INF/classes" includes="*.snet"/>
          </copy> 
              </target>
          </project>



          1.project 根結(jié)點
             基本屬性:name、default、basedir。
             name:    項目名稱(可選)
             default: 默認(rèn)開始執(zhí)行的target。(必需)
             basedir: 用于計算所有其他路徑的基路徑。可以被basedir property覆蓋。當(dāng)覆蓋時,該屬性被忽略。如果屬性和basedir property都沒有設(shè)定,就使用build.xml的父目錄。一般basedir=".",設(shè)置為build.xml所在的目錄。(可選)
           
          2.target
           Attribute屬性  Description屬性值內(nèi)容  Required
           name  target的名字  Y
           depends  需要依賴的其他target  N
           description  關(guān)于target功能的簡短描述  N
           if  為了執(zhí)行本target而被設(shè)置的屬性的名字  N
           unless  為了執(zhí)行本target而不被設(shè)置的屬性的名字  N
           
             2.1 依賴關(guān)系depands
                 <target name="A"/>
                 <target name="B" depends="A"/>
                 <target name="C" depends="B"/>
                 <target name="D" depends="C,B,A"/>
                 當(dāng)執(zhí)行target D,則先執(zhí)行A,再B,然后C,最后D。
                 一個target只能被執(zhí)行一次,即使有多個target依賴于它。
           
             2.2 if,unless
                 if屬性表示該屬性內(nèi)容的變量如果已經(jīng)被設(shè)置了,則可以執(zhí)行本target;
                 unless屬性則表示該屬性內(nèi)容的變量如果還沒有被設(shè)置,則可以執(zhí)行本target。
                 偽代碼:
                 //if="ready"                    //unless="ready"
                 if(ready == "ok"){              if(ready == null){
                    execute target;                     execute target;
                 }else {                                  }else {
                    skip;                                        skip;
                 }                                            }
                 如果沒有if或unless屬性,target總會被執(zhí)行。
           
             2.3 description屬性
                 可選的description屬性可用來提供關(guān)于target的一行描述,可由-projecthelp命令行選項輸出
           
          3. task
             常用的task:
             3.1 創(chuàng)建目錄mkdir
                 創(chuàng)建一個目錄,如果其父目錄不存在,也會被同時創(chuàng)建。
                 <mkdir dir="build/classes"/>
                
                 <target name="init">
                    <mkdir dir="${dist.dir}" />
                      <mkdir dir="${dist.classes.dir}" />
                      <mkdir dir="${dist.webapps.dir}" />
                 </target>
           
             3.2 刪除目錄delete
                 <delete includeEmptyDirs="true">
                      <fileset dir="${build}"/>
                 </delete>
           
                 <target name="clean" description="clean up" >
                      <delete dir="${build}"/>
                      <delete dir="${dist}"/>
                 </target>
           
             3.3 copy文件或目錄
                 <copy file="file" tofile="file.bak"/>
           
                 <copy file="config.xml" todir="${dist.classes.dir}"/>
           
                 <copy todir="${targetdir}">
                      <fileset dir="${sourcedir}"/>
                 </copy>
           
                 <target name="copy-resources" depends="clean">
                      <copy todir="${targetdir}">
                          <fileset dir="${sourcedir}">
                              <exclude name="**/**/*.java" />
                          </fileset>
                      </copy>
                 </target>
           
             3.4 move文件或目錄
                 <move file="file" tofile="file.bak"/>
           
                 <move todir="${targetdir}">
                      <fileset dir="${sourcedir}"/>
                 </move>
           
                 <move todir="${targetdir}">
                      <fileset dir="${sourcedir}">
                           <include name="**/**/*.java" />
                      </fileset>
                 </move>
           
             3.5 compile
                 <path id="libraries">
                      <fileset dir="${libdir}">
                           <include name="*.jar" />
                      </fileset>
                 </path>
                 <target name="compile" depends="copy-resources">
                      <javac srcdir="${sourcedir}"
                             destdir="${targetdir}"
                             classpathref="libraries" />
                      <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
                 </target>
           
             3.6 jar
                 <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
           
                 <jar destfile="${dist}/lib/app.jar">
                      <fileset dir="${build}/classes"
                  excludes="**/Test.class"
                   />
                     <fileset dir="${src}/resources"/>
                 </jar>
          4. 變量property
             <property name="sourcedir" value="${basedir}/src" />
             <property name="build"     location="build" />
             除了可以使用自定義的變量,還可以使用java系統(tǒng)屬性, 例如${os.name}對應(yīng)操作系統(tǒng)的名字,以及Ant內(nèi)置屬性:  
             basedir                     <project>的basedir屬性
             ant.file                      buildfile的絕對路徑
             ant.version               Ant的版本
             ant.project.name     當(dāng)前執(zhí)行的project的名字;由<project>的name屬性設(shè)定
             ant.java.version      Ant檢測到的JVM的版本
           
          5. build.xml example
          <?xml version="1.0" encoding="UTF-8" ?>
          <project default="junitTest" name="myProject" basedir=".">

                  <property name="sourcedir" value="${basedir}/src" />
                  <property name="targetdir" value="${basedir}/WEB-INF/classes" />
                  <property name="libdir" value="${basedir}/WEB-INF/lib" />
                  
                  <path id="libraries">
                          <fileset dir="${libdir}">
                                  <include name="*.jar" />
                          </fileset>
                  </path>
                  
                  
                  <target name="junitTest" depends="compile">
                          <java classname="junit.textui.TestRunner" >
                                  <classpath>
                                          <path refid="libraries" />
                                          <path location="${targetdir}" />
                                  </classpath>
                                  <arg value="can.junit.HibernateDemoTest" />
                          </java>
                  </target>

                  <target name="compile" depends="copy-resources">
                          <javac srcdir="${sourcedir}"
                                  destdir="${targetdir}"
                                  classpathref="libraries" />
                  </target>
                          
                  <target name="copy-resources" depends="clean">
                          <copy todir="${targetdir}">
                                  <fileset dir="${sourcedir}">
                                          <exclude name="**/**/*.java" />
                                  </fileset>
                          </copy>
                  </target>
                  
                  <target name="clean" >
                          <delete dir="${targetdir}" />
                          <mkdir    dir="${targetdir}" />
                  </target>
          </project>

          附件下載:
          JSPDemo
          StrutsDemo
          1.project 根結(jié)點
             基本屬性:name、default、basedir。
             name:    項目名稱(可選)
             default: 默認(rèn)開始執(zhí)行的target。(必需)
             basedir: 用于計算所有其他路徑的基路徑。可以被basedir property覆蓋。當(dāng)覆蓋時,該屬性被忽略。如果屬性和basedir property都沒有設(shè)定,就使用build.xml的父目錄。一般basedir=".",設(shè)置為build.xml所在的目錄。(可選)
           
          2.target
           Attribute屬性  Description屬性值內(nèi)容  Required
           name  target的名字  Y
           depends  需要依賴的其他target  N
           description  關(guān)于target功能的簡短描述  N
           if  為了執(zhí)行本target而被設(shè)置的屬性的名字  N
           unless  為了執(zhí)行本target而不被設(shè)置的屬性的名字  N
           
             2.1 依賴關(guān)系depands
                 <target name="A"/>
                 <target name="B" depends="A"/>
                 <target name="C" depends="B"/>
                 <target name="D" depends="C,B,A"/>
                 當(dāng)執(zhí)行target D,則先執(zhí)行A,再B,然后C,最后D。
                 一個target只能被執(zhí)行一次,即使有多個target依賴于它。
           
             2.2 if,unless
                 if屬性表示該屬性內(nèi)容的變量如果已經(jīng)被設(shè)置了,則可以執(zhí)行本target;
                 unless屬性則表示該屬性內(nèi)容的變量如果還沒有被設(shè)置,則可以執(zhí)行本target。
                 偽代碼:
                 //if="ready"                    //unless="ready"
                 if(ready == "ok"){              if(ready == null){
                    execute target;                     execute target;
                 }else {                                  }else {
                    skip;                                        skip;
                 }                                            }
                 如果沒有if或unless屬性,target總會被執(zhí)行。
           
             2.3 description屬性
                 可選的description屬性可用來提供關(guān)于target的一行描述,可由-projecthelp命令行選項輸出
           
          3. task
             常用的task:
             3.1 創(chuàng)建目錄mkdir
                 創(chuàng)建一個目錄,如果其父目錄不存在,也會被同時創(chuàng)建。
                 <mkdir dir="build/classes"/>
                
                 <target name="init">
                    <mkdir dir="${dist.dir}" />
                      <mkdir dir="${dist.classes.dir}" />
                      <mkdir dir="${dist.webapps.dir}" />
                 </target>
           
             3.2 刪除目錄delete
                 <delete includeEmptyDirs="true">
                      <fileset dir="${build}"/>
                 </delete>
           
                 <target name="clean" description="clean up" >
                      <delete dir="${build}"/>
                      <delete dir="${dist}"/>
                 </target>
           
             3.3 copy文件或目錄
                 <copy file="file" tofile="file.bak"/>
           
                 <copy file="config.xml" todir="${dist.classes.dir}"/>
           
                 <copy todir="${targetdir}">
                      <fileset dir="${sourcedir}"/>
                 </copy>
           
                 <target name="copy-resources" depends="clean">
                      <copy todir="${targetdir}">
                          <fileset dir="${sourcedir}">
                              <exclude name="**/**/*.java" />
                          </fileset>
                      </copy>
                 </target>
           
             3.4 move文件或目錄
                 <move file="file" tofile="file.bak"/>
           
                 <move todir="${targetdir}">
                      <fileset dir="${sourcedir}"/>
                 </move>
           
                 <move todir="${targetdir}">
                      <fileset dir="${sourcedir}">
                           <include name="**/**/*.java" />
                      </fileset>
                 </move>
           
             3.5 compile
                 <path id="libraries">
                      <fileset dir="${libdir}">
                           <include name="*.jar" />
                      </fileset>
                 </path>
                 <target name="compile" depends="copy-resources">
                      <javac srcdir="${sourcedir}"
                             destdir="${targetdir}"
                             classpathref="libraries" />
                      <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
                 </target>
           
             3.6 jar
                 <jar destfile="${jardir}/my.jar" basedir="${targetdir}"/>
           
                 <jar destfile="${dist}/lib/app.jar">
                      <fileset dir="${build}/classes"
                  excludes="**/Test.class"
                   />
                     <fileset dir="${src}/resources"/>
                 </jar>
          4. 變量property
             <property name="sourcedir" value="${basedir}/src" />
             <property name="build"     location="build" />
             除了可以使用自定義的變量,還可以使用java系統(tǒng)屬性, 例如${os.name}對應(yīng)操作系統(tǒng)的名字,以及Ant內(nèi)置屬性:  
             basedir                     <project>的basedir屬性
             ant.file                      buildfile的絕對路徑
             ant.version               Ant的版本
             ant.project.name     當(dāng)前執(zhí)行的project的名字;由<project>的name屬性設(shè)定
             ant.java.version      Ant檢測到的JVM的版本
           
          5. build.xml example
          <?xml version="1.0" encoding="UTF-8" ?>
          <project default="junitTest" name="myProject" basedir=".">

                  <property name="sourcedir" value="${basedir}/src" />
                  <property name="targetdir" value="${basedir}/WEB-INF/classes" />
                  <property name="libdir" value="${basedir}/WEB-INF/lib" />
                  
                  <path id="libraries">
                          <fileset dir="${libdir}">
                                  <include name="*.jar" />
                          </fileset>
                  </path>
                  
                  
                  <target name="junitTest" depends="compile">
                          <java classname="junit.textui.TestRunner" >
                                  <classpath>
                                          <path refid="libraries" />
                                          <path location="${targetdir}" />
                                  </classpath>
                                  <arg value="can.junit.HibernateDemoTest" />
                          </java>
                  </target>

                  <target name="compile" depends="copy-resources">
                          <javac srcdir="${sourcedir}"
                                  destdir="${targetdir}"
                                  classpathref="libraries" />
                  </target>
                          
                  <target name="copy-resources" depends="clean">
                          <copy todir="${targetdir}">
                                  <fileset dir="${sourcedir}">
                                          <exclude name="**/**/*.java" />
                                  </fileset>
                          </copy>
                  </target>
                  
                  <target name="clean" >
                          <delete dir="${targetdir}" />
                          <mkdir    dir="${targetdir}" />
                  </target>
          </project>

          附件下載:
          JSPDemo
          StrutsDemo

          posted on 2009-04-15 21:57 weesun一米陽光 閱讀(13707) 評論(0)  編輯  收藏 所屬分類: JAVA源碼總結(jié)備用
          主站蜘蛛池模板: 彭州市| 柳江县| 南川市| 乌恰县| 固原市| 九龙城区| 东乡县| 定远县| 柏乡县| 繁峙县| 嘉峪关市| 墨脱县| 无为县| 图们市| 滦南县| 陆丰市| 五大连池市| 比如县| 临清市| 陇南市| 枣阳市| 绥德县| 准格尔旗| 扶绥县| 松潘县| 中卫市| 连云港市| 邛崃市| 徐闻县| 马关县| 眉山市| 年辖:市辖区| 巍山| 安吉县| 长葛市| 济源市| 章丘市| 贵德县| 张家港市| 定兴县| 嘉峪关市|