ant編譯mxmlc
1. ant怎麼編譯帶有依賴關系的類
1.所有的類一起編譯。
2.你的父添加到classpath中。
3.ant 中添加 classpath 下邊是例 子。
<javac destdir="${classes.dir}" srcdir="${src.dir}" encoding="UTF-8">
<classpath refid="classespath" />
</javac>
2. ant編譯build.xml文件
折騰了大半天,可算搗騰出來了,這里需要提醒注意如下幾點:
1、如果jdk是1.6及以下,則需要使用的ant版本是1.9.x;
2、如果jdk是1.8,則需要使用ant版本是1.10.x;
3、可用eclipse導出war包,將lib目錄下的jar包放到一個目錄下,然後直接引用,避免遺漏掉jar包沒導入進去。
以下是build.xml文件內容,安裝好ant後,直接執行ant build.xml即可打包。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 定義一個工程,默認任務為warFile。 -->
<project name="bing-info" default="warFile" basedir=".">
<!-- 指定jdk 貌似這里指定也沒什麼用~-->
<property name="env.JAVA_HOME" value="C:/Program Files/Java/jdk1.8.0_101"/>
<!-- 定義屬性,打成war包的名稱。 -->
<property name="warFileName" value="nbAPP.war"></property>
<!-- 指定war包路徑及依賴包路徑 這里需要指定工程的路徑 -->
<property name="compilePath" value="D:/project/nbAPP"/>
<!-- 定義路徑,編譯java文件時用到的jar包。 -->
<path id="project.lib">
<fileset dir="${basedir}/lib">
<include name="**/*.jar"/>
</fileset>
</path>
<!-- 定義任務,清空任務:清空原有的class文件,創建新的build路徑。 -->
<target name="clean">
<delete dir="${compilePath}/build" />
<mkdir dir="${compilePath}/build" />
</target>
<!-- 定義任務,編譯src文件夾中的java文件,編譯後的class文件放到創建的文件夾下。 -->
<target name="compile" depends="clean">
<javac srcdir="${basedir}/src/main" debug="true" includeantruntime="false" encoding="UTF-8" >
<classpath refid="project.lib">
</classpath>
</javac>
</target>
<!-- 定義默認任務,將class文件集合成jar包。 -->
<target name="warFile" depends="compile">
<!-- 刪除原有war包。 -->
<delete dir="${compilePath}/${warFileName}" />
<!-- 建立新war包。 -->
<war destfile="${compilePath}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">
<!-- 將非jar和非class文件拷貝到war包的對應路徑下。 -->
<fileset dir="${basedir}/WebRoot">
<include name="**/**.*" />
<exclude name="**/*.jar"/>
<include name="WEB-INF/classes/**"/>
</fileset>
<!-- 將jar和class文件拷貝到war包的對應路徑下。 -->
<lib dir="${compilePath}/lib" />
<classes dir="${compilePath}/build" />
<!-- 將資源文件拷貝進war對應路徑下 -->
<classes dir="${basedir}/src/main/resources" />
</war>
</target>
</project>
3. 有用過ant自動編譯flex項目的嗎
偶然編譯一個開源as3(採用flex sdk——採用flex4.6)項目,由ant配置進行自動編譯,想增加特性,需要在原有編譯預定義全局常量(由-define=XXX:NNNN,VVVV 形式定義)基礎上需要增加參數,如原來只有XXX:NNNN1,VVVV1 現在想還有XXX:NNNN2,VVVV2 。
原來的項目採用的是ant exec 直接調用mxmlc命令行進行編譯(可以不依賴於flex的flexTasks限制),其調用mxmlc傳入參數(傳入的參數是字元串值)採用如下方式
點擊(此處)折疊或打開
<exec executable="${mxmlc.exe}" dir="${basedir}" failonerror="true">
<arg line="'${src.dir}/${package}/${class}.as'" />
...
<arg line="-define=XXXX::nnnn1,'vvv1'" />
</exec>
當然現在編譯是成功的,我依葫蘆畫瓢改寫成
點擊(此處)折疊或打開
<exec executable="${mxmlc.exe}" dir="${basedir}" failonerror="true">
<arg line="'${src.dir}/${package}/${class}.as'" />
...
<arg line="-define=XXXX::nnnn1,'vvv1'" />
4. 如何使用ANT在命令行進行編譯和測試
一、環境變數
在網上找到ANT的壓縮包,解壓縮以後放到C盤根目錄如下圖
對,就是這個鬼樣子,放在這里就可以用了,不用安裝之類的
環境變數如下圖:
你要定義ANT_HOME,然後讓系統path找到這個ANT_HOME就行了
二、寫build.xml
你的目錄結構如下圖:
源文件 放在src
引用的jar包放在lib
編譯結果安排在classes
接下來就是build.xml了
如下,自己看吧
[html] view plain
<?xml version="1.0"?>
<project name="pojo_0428" default="prepare" basedir=".">
<property name="source.root" value="src"/>
<property name="class.root" value="classes"/>
<property name="lib.dir" value="lib"/>
<!-- class path for compilation and execution -->
<path id="basepath">
<!-- 運行時 class文件的位置 -->
<pathelement location="${class.root}" />
<!-- jar包 -->
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
</path>
<!--默認的target -->
<target name="prepare">
<delete dir="${class.root}"/>
<mkdir dir="${class.root}"/>
</target>
<!--編譯 -->
<target name="compile" depends="prepare">
<javac srcdir="${source.root}"
destdir="${class.root}"
debug="on"
optimize="off"
deprecation="on">
<classpath refid="basepath"/>
</javac>
</target>
<!--執行。 案常式序的入口 依賴 compile -->
<target name="run" depends="compile">
<java classname="com.javathink.Student" fork="true">
<classpath refid="basepath"/>
</java>
</target>
</project>
5. java ant 編譯問題
從錯誤上看是由於ant編譯時虛擬機內存不足導致溢出,你可以試試下面的方法:
打開菜單Window>Preference>Java>Installed JREs
轉鍾默認的jre,點擊edit,在Default VM Arguments中輸入-Xms256m -Xmx512m
重新啟動myeclipse再試試