Ant 相信大家都不陌生,你可以把它理解為使用 xml 格式描述的一系列命令處理工具。它是一種基于Java的build工具。理論上來說,它有些類似于(Unix)C中的make、有些類似于基于shell命令編寫的sh腳本文件。Ant 用 Java 的類來擴展。(用戶)不必編寫 shell 命令,而是基于XML配置文件的,通過調用 target 樹,就可執行各種 ant task。每個 task 由實現了一個特定 Task 接口的對象來運行。
常規來說 Ant 是需要獨立運行庫來運行,相當于要下載一個類似于 tomcat 這樣的包并進行配置后才可以使用。而現在的項目我們大多數基于 Maven 構建,如果你希望在編譯項目的過程中(編譯前中后通過 phase 控制)做相應的處理操作(自動生成文件、替換項目代碼中的常量值、執行相關命令等),那么可以通過本文所述插件 maven-antrun-plugin
來將 maven 構建和 ant 腳本的運行有效結合起來,該插件配置即用不需要下載額外的運行庫。
下面是一個簡單的示例,演示了 “自動生成 Version.java 文件,然后替換文件中的變量值” 的場景:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>3.1.0</version><executions><execution><goals><goal>run</goal></goals><phase>generate-sources</phase><configuration><target><property name="src.dir" value="${project.build.sourceDirectory}"/><property name="package.dir" value="com/shanhy/demo"/><property name="package.name" value="com.shanhy.demo"/><property name="buildtime" value="${maven.build.timestamp}"/><echo file="${src.dir}/${package.dir}/Version.java"message="package ${package.name};${line.separator}${line.separator}"/><echo file="${src.dir}/${package.dir}/Version.java" append="true"message="public final class Version {${line.separator}"/><echo file="${src.dir}/${package.dir}/Version.java" append="true"message=" public static String NUMBER = "${project.version}";${line.separator}"/><echo file="${src.dir}/${package.dir}/Version.java" append="true"message=" public static String BUILD_TIME = "${buildtime}";${line.separator}"/><echo file="${src.dir}/${package.dir}/Version.java" append="true"message="}${line.separator}"/><replace file ="${src.dir}/${package.dir}/Version.java" token="-SNAPSHOT"value="" /></target></configuration></execution></executions>
</plugin>
示例旨在拋磚引玉的意義,能有效理解該插件的實際作用和使用方法,至于你希望運行更復雜的業務處理或者運行更多的腳本內容,你都可以在 <target></target>
節點中編寫任意 ant 腳本內容,或者參考插件官方使用文檔,指定一個獨立外置的 build.xml 文件來執行 ant 腳本。
插件的官方使用文檔地址:https://maven.apache.org/plugins/maven-antrun-plugin/usage.html
Ant 語法官方使用手冊地址: https://ant.apache.org/manualdownload.cgi
(END)