用Ant-Ivy來做類似Maven的包管理
阿新 • • 發佈:2019-01-22
If: 你要準備建立新專案,那就直接上Maven吧!
Else: 如果你手頭上的專案正在用Ant工具,你可以考慮用Ant-Ivy來做類似Maven的依賴(包)管理。這個工具還有衍生的IvyDE外掛來方便你使用Eclipse開發環境。下面例子將演示設定基本的Ant-Ivy環境。
建立用Ant管理的專案
建立的工程結構如下
<pre name="code" class="plain">. ├── build.xml ├── ivy.xml ├── lib │ └── ivy-2.4.0.jar └── src ├── main │ └── java │ └── com │ └── yiyeguhu │ └── example │ └── antivy │ └── DateUtils.java └── test └── java └── com └── yiyeguhu └── example └── antivy
定義Ivy任務
首先,你需要從Apache Ivy下載ivy*.jar包,將它放在如本例所示的“./lib”路徑下。
在build.xml中定義Ivy任務,而之後將用到:
<pre name="code" class="html"><path id="ivy.jar.file"> <fileset dir="./lib"> <include name="ivy*.jar" /> </fileset> </path> <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.jar.file"/>
解析專案依賴
在ivy.xml中以類似Maven包管理的方式定義你的專案依賴項。比如,你想要在你的工程中包含commons-lang3包。相關資訊網頁顯示如下Maven依賴項屬性:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
你只需要將“groupId”、“artifactId”、“version”分別轉譯成“org”、“module”、“rev”。其實,
<ivy-module version="2.0">
<info organisation="org.apache" module="dateUtilsProject" />
<dependencies>
<dependency org="org.apache.commons" name="commons-lang3" rev="3.4" />
</dependencies>
</ivy-module>
我們再在build.xml定義一個Ant目標來做最後的解析工作。
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="${lib.dir}/[organisation]/[type]/[artifact]-[type]-[revision].[ext]" />
</target>
其他
依賴解析完成之後,我們的Java程式碼就可以import “org.apache.commons.lang3“中的方法了。
package main.java.com.yiyeguhu.example.antivy;
import java.util.Date;
import org.apache.commons.lang3.StringUtils;
public class DateUtils {
public static void main(String[] args) {
System.out.println(getLocalCurrentDate());
String someWhiteSpace = " \t \n";
boolean result = StringUtils.isBlank(someWhiteSpace);
System.out.println(result);
}
private static Date getLocalCurrentDate() {
return new Date();
}
}
工程的其他部分包括一些常規的Ant目標來編譯和打jar包。
最後,我們只需執行“ant”命令來建jar包!