看起来你在这里转了一圈。Ivy 与 Ant 合作。您仍然有一个build.xml
用于构建的文件。该ivy.xml
文件仅包含您的项目构建所需的第三方 jar 列表。因此,您的问题的直接答案是:
将以下内容放入您的build.xml
:
<target name="doc" description="generate documentation">
<delete dir="${doc.dir}"/>
<mkdir dir="${doc.dir}"/>
<javadoc sourcepath="${source.dir}" destdir="${doc.dir}"/>
</target>
当你使用 Ivy 时,你仍然使用 Ant。而且,你还有一个build.xml
文件。而且,您仍然使用各种 Ant 任务编写您的构建。
下载这个项目。这是一个简单的构建,包含三个类文件和一个build.xml
文件。您会注意到有一个 jar 目录,其中包含以下两个 jar:
- commons-logging-1.1.1.jar
- spring.jar
如果您查看文件的第 36 到 40 行build.xml
,该项目正在创建一个编译类路径,如下所示:
<path id="java">
<fileset file="jar/spring.jar"/>
<fileset file="jar/commons-logging-1.1.1.jar"/>
</path>
所以,当他编译时,他这样做:
<javac destdir="bin">
<src path="${src}"/>
<classpath refid="java"/>
</javac>
现在,让我们看看 Ivy 会如何改变这种情况。在 Ivy 中,我创建了一个ivy.xml
文件,其中包含我需要的 jar 的描述。但是,我只需要指定我直接使用的类。在这种情况下,我只需要spring.jar
. 这是我的ivy.xml
:
<ivy-module version="1.0>
<info organisation="com.seantheflexguy"
name="ContextExample"
revision="1.0"/>
<configurations>
<conf="default" visibility="public"/>
<conf="compile" visibility="public"/>
</configurations>
<dependencies>
<dependency org="org.springframework" name="spring"
rev="2.0.4" conf="compile->default"/>
</dependencies>
</ivy-module>
现在,jar
我将不再使用目录中的 jar,而是让 Ivy 构造类路径:
<ivy:resolve/>
<ivy:cachepath pathid="java"/>
<javac destdir="bin">
<src path="${src}"/>
<classpath refid="java"/>
</javac>
请注意,我没有<path>
使用任务来创建类路径,而是使用了 Ivy 使用的两个 Ant 任务。<ivy:resolve/>
看着我并解决了我对我请求的 jar的ivy.xml
依赖。这些罐子将被下载到我的$HOME/.ivy2/cache
目录中。
该<ivy:cachepath>
任务创建了一个类路径,我将其称为类路径java
,因为它以前是这样调用的。
通过这两个 Ivy 任务,我创建了一个可以用于该<javac>
任务的类路径。事实上,我什至懒得改变<javac>
任务。
所以,在常春藤:
- 我仍然需要我的
build.xml
. 这就是我定义我需要做的各种构建任务的方式。事实上,Ivy 在我的build.xml
文件中定义了更多我需要的 Ant 任务。
- 该
ivy.xml
文件只是定义了我的 jar 依赖项。当我在这个项目中实现 Ivy 时,我可以删除该jar
目录。
这是否有助于您了解 Ivy 的工作原理?