学习网站: apache, there are samples, 速成. 先记下来, 用到再学.
简介
我们现在java项目用的build工具是ant, 虽然也知道还有一个maven, 而且现在用的人越来越多, 但是偷懒不愿去深入看.
不过maven中的dependency功能还是很好, 一直希望ant也有这么个功能就好了.
今天, 无意中去Apache Ant的主页, 结果就看到了Ivy2.
Ivy以前也听说过, 不过一直没有尝试去用. 今天看到了就小试了一下.
Ivy的安装
Ivy的安装很容易, 下载之后只要将Ivy的jar文件放到Ant的lib目录就可以了.
http://ant.apache.org/ivy/history/latest-milestone/install.html
当然, 如果你用的是ant1.5, 那么安装就稍微麻烦一点. 我用的是Ant 1.7. (免费的为什么不用最新的, 而且出来也已经一年多了, 更没理由不用了)
Ivy 小试
Ivy的src目录下有一些example:
apache-ivy-2.0.0-beta1/src/example/hello-ivy
命令行下进入上述目录, 然后ant
执行结束, 就可以发现多了lib和build的目录以及里面的内容.
打开ivy.xml, 可以看到两个个dependency的定义.
<ivy-module version="2.0">
<info organisation="org.apache" module="hello-ivy"/>
<dependencies>
<dependency org="commons-lang" name="commons-lang" rev="2.0"/>
<dependency org="commons-cli" name="commons-cli" rev="1.0"/>
</dependencies>
</ivy-module>
到lib目录下看, 有三个jar文件
commons-cli-1.0.jar
commons-lang-2.0.jar
commons-logging-1.0.jar
这些就是从repository复制/下载下来的jar文件. 确实不错,
以后就不用手工去copy那么多的jar了, 而且还不知道是否真的用到, 管理起来也太麻烦.
这下好了, 有了Ivy看来可以稍微轻松一点了, 唯一要投资的就是Ivy的学习时间. 还是值得的!
Ivy Dependency
关于dependency, 从英文文档翻译一下, 简单来说:
1.Ivy默认使用maven 2的repository. 要设置dependency中的属性值, 需要知道library的确切信息.
2.mvnrepository.com上可以找到library以及他们的详细信息. 一旦你找到了你需要的类库, 就可以找到这些类库在Maven2的POM文件中dependency的信息.
3.把Maven2的dependency转换为Ivy的dependency, 你只要把groupId作为organization, 把artifactId作为module name, version作为revision.
4....
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bruni/archive/2008/01/14/2042698.aspx
Ref: http://ant.apache.org/ivy/history/latest-milestone/tutorial/start.html
Section: The build.xml file
Tutorials: http://ant.apache.org/ivy/history/latest-milestone/tutorial.html
Ant tasks: http://ant.apache.org/ivy/history/latest-milestone/ant.html
Ant build.xml
要查看ant build文件中的所有target, 只要在命令行下输入"ant -P" 就可以了.
下面是hello-ivy的build.xml片段:
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="run">
...
<!-- =================================
target: resolve
================================= -->
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve />
</target>
</project>
可以看到, revole和retrieve dependency很简单, 只要你正确安装Ivy, 然后在build.xml中定义一个namespace, 所有Ivy ant task就全部可用了.
xmlns:ivy="antlib:org.apache.ivy.ant"
如果没有任何设置, Ivy会从maven2 的repository获取文件. resove task 在maven 2 repository中找到了 commons-lang 和 commons-cli, 并且获知 commons-cli依赖于 commons-logging, 所以也会主动把common-logging下载下来. Ivy默认会先把相应的文件放到它的cache中 (默认是user home/.ivy2/cache目录).
最后, resolve task会将相关的jar文件都copy到项目的library目录 (默认是lib目录, 不过你可以很方便的修改, 只要设置retrieve task的属性).
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bruni/archive/2008/01/15/2045060.aspx