當前位置:首頁 » 編程軟體 » ant泛型編譯

ant泛型編譯

發布時間: 2023-06-14 18:52:11

Ⅰ 如何使用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>

Ⅱ ant編譯報錯的問題

不是代碼的問題,是你引包出現的問題。給的報錯已經很明顯了,EntityDaoHibernate類和EntityDaoHibernate類都有findByHql方法,且簽名相同。檢查你javac標簽下的classpath有沒有引錯包。

Ⅲ 如何使用Ant腳本編譯出Jar和Apk包

首先我們來看看如何使用ant腳本打出一個jar包 我們新建一個工程AntExportJar 在工程的目錄下面新建一個build.xml,這個是ant腳本規定的一個入口腳本文件,文件名都是:build.xml [html] view plain ?
<?xml version ="1.0" encoding ="UTF-8" ?>
<project name ="AntExportJar" basedir ="." default ="exportJar" >
????<!--?設置全局變數?-->
????<property name ="src" value ="src" />
????<property name ="dist" value ="dist" />
????<property name ="app.name" value ="ant" />
????<property name ="app.version" value ="1.0" />
????<property name ="classes.encode" value ="GBK" />
????<property name ="lib" value ="libs" />

????<property
????????name ="project-dir"
????????value ="C:\Users\i\workspace\AntExportJar" />
????<property
????????name ="sdk-folder"
????????value ="C:\Users\i\AppData\Local\Android\sdk" />
????<property
????????name ="platform-folder"
????????value ="${sdk-folder}\platforms\android-22" />
????<property
????????name ="android-jar"
????????value ="${platform-folder}\android.jar" />
????<property
????????name ="src"
????????value ="${project-dir}\src" />
????<property
????????name ="bin"
????????value ="${project-dir}\bin" />
????<property
????????name ="libs"
????????value ="${project-dir}\lib" />

????<!--?task?-->
????<target name ="init" >
????????<echo>
????????????Initialize...
????????</echo>
????????<delete dir ="${bin}" />
????????<mkdir dir ="${bin}" />
????</target>

????<target name ="buildFiles" depends ="init" >
????????<javac
????????????????bootclasspath ="${android-jar}"
????????????????compiler ="javac1.7"
????????????????target ="1.7"
????????????????destdir ="${bin}"
????????????????encoding ="GBK"
????????????????includeAntRuntime ="true"
????????????????listfiles ="true" >
????????????????<src path ="${project-dir}" />
????????????????<classpath>
?????????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
?????????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????????</classpath>
????????</javac>
????</target>

????<!--?導出jar文件?-->
????<target name ="exportJar" depends ="buildFiles" >
????????<delete dir ="${dist}" />
????????<!--?Create?the?distribution?directory?-->
????????<mkdir dir ="${dist}" />
????????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????????<!--
????????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????????-->
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????????????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????????</jar>
????</target>
</project>
腳本很簡單,下面我們就來分析一下: [html] view plain ?
<project name ="AntExportJar" basedir ="." default ="exportJar" >
最外圍的一個標簽是project,是一個工程標簽,有名字,還有就是工程的目錄baseDir,用點號:"." 接下來就是定義全局變數,或者是屬性值: [html] view plain ?
<!--?設置全局變數?-->
<property name ="src" value ="src" />
<property name ="dist" value ="dist" />
<property name ="app.name" value ="ant" />
<property name ="app.version" value ="1.0" />
<property name ="classes.encode" value ="GBK" />
<property name ="lib" value ="libs" />

<property
????name ="project-dir"
????value ="C:\Users\i\workspace\AntExportJar" />
<property
????name ="sdk-folder"
????value ="C:\Users\i\AppData\Local\Android\sdk" />
<property
????name ="platform-folder"
????value ="${sdk-folder}\platforms\android-22" />
<property
????name ="android-jar"
????value ="${platform-folder}\android.jar" />
<property
????name ="src"
????value ="${project-dir}\src" />
<property
????name ="bin"
????value ="${project-dir}\bin" />
<property
????name ="libs"
????value ="${project-dir}\lib" />
這樣我們在後面就可以使用:${name值} 來使用value值的定義了,所以這里就相當於定義了變數的作用,這里我們看到有一些value值是路徑,但是這里我們感覺有一個不好的地方,就是這些路徑是寫死的,那麼我們還可以怎麼做能讓他變得靈活呢?其實很簡單,ant腳本中是可以訪問環境變數的,那麼我們只要將這些路徑定義成環境變數就可以了: [html] view plain ?
<property environment ="env" />
<property name ="ANDROID_HOME" value ="${env.ANDROID_HOME}" />
第一行先申明一個環境變數值,這個env是公共的寫法,也是ant自帶的,他表示當前的環境變數的值,那麼後面就可以訪問具體的哪些環境變數了,比如這里我配置了ANDROID_HOME這個環境變數,那麼就可以用${env.ANDROID_HOME}來訪問androidsdk的目錄了,和上面的那個直接使用絕對路徑的方式是一樣的。 解析來就是定義task了,在ant中task也是最重要的,我們最終運行的都是task,就相當於Java中的main方法一樣。ant腳本中可以定義多個task,而且每個task可以有執行的先後順序的。相當於Java中的方法中調用其他方法一樣。 [html] view plain ?
<!--?task?-->
<target name ="init" >
????<echo>
????????Initialize...
????</echo>
????<delete dir ="${bin}" />
????<mkdir dir ="${bin}" />
</target>
首先這里定義了一個初始化的task,其中echo標簽也是很常用的,就是列印信息的,然後是刪除目錄${bin},這個bin變數在上面已經定義了,然後在創建${bin}目錄。 初始化完之後,開始執行編譯工作: [html] view plain ?
<target name ="buildFiles" depends ="init" >
????<javac
????????bootclasspath ="${android-jar}"
????????compiler ="javac1.7"
????????target ="1.7"
????????destdir ="${bin}"
????????encoding ="GBK"
????????includeAntRuntime ="true"
????????listfiles ="true" >
????????<src path ="${project-dir}" />
????????????<classpath>
????????????????<!--?引用第三方jar包需要引用,用於輔助編譯,並沒有將jar打包進去。jar的打包在dex命令中。-->
????????????????<fileset dir ="${libs}" includes ="*.jar" />
????????????</classpath>
????</javac>
</target>
這里在此定義一個buildFiles的task,depends的值是表示當前的task在這個depends的task執行完之後在執行,這里就是先執行init的task,然後在執行buildFiles的task,這里的task主要是編譯Java成class文件: bootclasspath:表示編譯依賴的系統庫,這里依賴的是android.jar compiler:表示編譯的java版本 target:表示編譯之後的class的版本,就是能夠運行的java版本 destDir:表示編譯之後的class文件的存放目錄 其他的就不說了,這里還有一個重點,也就是我們在編譯的時候會遇到的問題,就是我們在編譯的時候,會引用到第三發的jar,所以這里我們為了保證能夠編譯過,這里還必須用classpath標簽來引用這些jar,當然這里只是能夠保證編譯通過,並不會把這些jar也編譯到最終我們想要的jar中,這個問題我們後面再說。 下面在看最後的一個task,就是將編譯完之後的class文件打包成jar文件: [html] view plain ?
<!--?導出jar文件?-->
<target name ="exportJar" depends ="buildFiles" >
????<delete dir ="${dist}" />
????<!--?Create?the?distribution?directory?-->
????<mkdir dir ="${dist}" />
????<!--?Put?everything?in?${classes}?into?the?MyProject-${DSTAMP}.jar?file?-->
????<jar jarfile ="${dist}/${app.name}.jar" basedir ="${bin}" >
????????<!--
????????<fileset?dir="${libs}"?includes="**/*.jar"?/>
????????-->
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/Bai_NativeAd_SDK.jar" />
????<zipfileset excludes ="META-INF/*.SF" src ="${libs}/gdt_mob_release.jar" />
????</jar>
</target>
這里我們定義了一個exportJar的task,他是在buildFiles的task運行完之後在運行。 首先刪除目標目錄${dist},然後在創建一個目錄。這個目錄就是存放最後編譯好的jar文件的目錄 然後就是用jar標簽來導出jar文件了: jarfile:表示編譯完之後存放的jar文件名路徑 basedir:表示需要編譯jar的class文件目錄 其他就OK了,但是在實際中我們在編譯的過程中會引用到第三方的jar,那麼這時候我們把這些jar編譯到最終的jar中,說道這里,其實我們在使用Eclipse導出jar的時候,有一個插件可以做到這點:fat-jar,安裝完插件

Ⅳ ant編譯時遇到警告的編譯不通過,

<javac nowarn=on ...>

Ⅳ 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>

Ⅵ 如何使用Ant來編譯Java文件以及如何運行

一、源文件情況
源文件位置為:D:\temp,源文件名(含包名字):com.ldq.WeatherDemo.java

前提:已安裝 jdk ,並配置好環境變數。

二、過程
1、編譯:
提示符進入 D:\temp 路徑下,輸入:javac com\ldq\WeatherDemo.java
生成類文件:WeatherDemo.class

2、打包:
提示符進入 D:\temp 路徑下,輸入:jar cvf WeatherDemo.jar com\ldq\WeatherDemo.class
生成檔案文件:WeatherDemo.jar

3、修改 MANIFEST.MF 文件:
由於引用了外部的類,所以要添加引用類的路徑,即修改MANIFEST.MF文件。保存如下內容到 D:\temp下,文件名 MANIFEST.MF

Manifest-Version: 1.0
Sealed: true
Main-Class: com.ldq.WeatherDemo
Class-Path: lib/jaxrpc.jar lib/log4j-1.2.8.jar lib/mail.jar lib/saaj.jar lib/tools.jar lib/wsdl4j-1.5.1.jar lib/activation.jar lib/axis.jar lib/axis-ant.jar lib/commons-discovery-0.2.jar lib/commons-logging-1.0.4.jar

注意在後面空兩行。
提示符進入 D:\temp 路徑下,輸入:jar umf MANIFEST.MF WeatherDemo.jar
執行時會提示更新的內容。

4、添加包含引用類的相應文件:
在 D:\temp 路徑下,新建 lib 文件夾,講對應的 jaxrpc.jar ... 拷入其中,此時,即可雙擊(或在提示符下輸入:java -jar WeatherDemo.jar)運行 WeatherDemo.jar 文件了。

三、總結
雙擊運行 jar 文件時,虛擬機會到 jar 文件中下找 .MF 文件,找到對應的 Main-Class 運行,引入的類在 Class-Path 所指路徑。
事實上可以利用 winrar或winzip 工具打開 jar 文件,直接將修改好的 MANIFEST.MF 拷入覆蓋,class文件也可以做同樣的操作,節省了輸入復雜難記的命令。另外,對於 javaME 生成的 jar 文件,限制嚴格些,MANIFEST.MF 文件中有個文件大小的欄位,可以先保存,查看文件大小,再修改保存。
另一種方法是通過 Eclipse - Export - Runnable JAR file 直接生成 jar 文件,此時,所有的引用類都被打包在 jar 文件里了。

Ⅶ ant怎麼編譯帶有依賴關系的類

1.所有的類一起編譯。
2.你的父添加到classpath中。
3.ant 中添加 classpath 下邊是例 子。
<javac destdir="${classes.dir}" srcdir="${src.dir}" encoding="UTF-8">
<classpath refid="classespath" />
</javac>

Ⅷ ant編譯老是不成功,請教高手!!

如果你的文件名字是build.xml的話,在命令提示符中只需輸入ant即可
不要用ant build
假如文件的名字不是build.xml而是其他的,比如name.xml,要運行的話就得這樣輸入命令 ant buildfile name.xml

熱點內容
安卓手機微信語音怎麼不能轉文 發布:2025-02-09 08:25:30 瀏覽:921
c上機編程題 發布:2025-02-09 08:17:18 瀏覽:318
顯示語法錯誤編譯不出來 發布:2025-02-09 08:17:09 瀏覽:284
酒店配置什麼滅火系統 發布:2025-02-09 08:06:37 瀏覽:773
java至尊 發布:2025-02-09 08:03:23 瀏覽:558
pythonwith 發布:2025-02-09 08:00:25 瀏覽:172
Ftp打開文件是只讀模式 發布:2025-02-09 07:40:55 瀏覽:504
androidlistview點擊事件 發布:2025-02-09 07:25:52 瀏覽:172
targz解壓縮 發布:2025-02-09 06:59:19 瀏覽:311
wpsphp 發布:2025-02-09 06:58:41 瀏覽:962