我对Ivy很新,但已经让它与jar依赖项一起工作了.问题是尝试设置它,所以我可以独立于jar获取javadoc和源.
我有一个简单的测试项目,但无论我在做什么,我都会在其中获取带有类文件的jar.
我有以下ivy.xml文件:
<ivy-module version="1.0">
<info
organisation="com.vegicorp"
module="test"
revision="1.0"
status="release"/>
<configurations>
<conf name="default" visibility="public" extends="runtime,master"/>
<conf name="master" visibility="public"/>
<conf name="compile" visibility="public"/>
<conf name="provided" visibility="public"/>
<conf name="runtime" visibility="public" extends="compile"/>
<conf name="test" visibility="private" extends="runtime"/>
<conf name="system" visibility="public"/>
<conf name="sources" visibility="public"/>
<conf name="javadoc" visibility="public"/>
<conf name="optional" visibility="public"/>
</configurations>
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="compile->default"/>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="sources->default">
<artifact name="commons-logging" type="sources" ext="jar"/>
</dependency>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="javadoc->default">
<artifact name="commons-logging" type="javadoc" ext="jar"/>
</dependency>
</dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
以下内容build.xml:
<project name="ivy-test" default="default" basedir="."
xmlns:ivy="http://ant.apache.org/ivy">
<property name="ivy.dir" value="${basedir}/ivy.dir"/>
<import file="${ivy.dir}/ivy.tasks.xml"/>
<property name="target.dir" value="${basedir}/lib"/>
<target name="-resolve">
<ivy:resolve/>
</target>
<target name="clean">
<delete dir="${target.dir}"/>
<ivy:cleancache/>
</target>
<target name="default"
depends="-resolve">
<fail message="ivy.conf is not defined">
<condition>
<not>
<isset property="ivy.conf"/>
</not>
</condition>
</fail>
<delete dir="${target.dir}"/>
<mkdir dir="${target.dir}"/>
<ivy:retrieve conf="${ivy.conf}"
pattern="${target.dir}/[artifact]-[revision].[ext]"/>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)
在命令行中,我将输入:
$ ant -Divy.conf=compile
Run Code Online (Sandbox Code Playgroud)
而且,应该下载带有类的jar文件.
但是如果我输入它:
$ ant -Divy.conf=sources
Run Code Online (Sandbox Code Playgroud)
我想要包含源而不是类的jar文件,当我输入时:
$ ant -Divy.conf=javadoc
Run Code Online (Sandbox Code Playgroud)
我想要包含javadoc而不是源代码的jar文件.
我很确定这是我ivy.xml的不太对.我原本试过这个:
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1">
<artifact name="commons-logging" type="jar" ext="jar" conf="compile->default"/>
<artifact name="commons-logging" type="sources" ext="jar" conf="sources->default"/>
<artifact name="commons-logging" type="javadoc" ext="jar" conf="javadoc->default"/>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这下载了jar,源代码和javadoc,但无论我尝试了哪种配置,都可以立即下载.
好吧,我想我已经弄明白了.我在想整个过程.我的<dependencies>部分应如下所示:
<dependencies>
<dependency org="commons-logging" name="commons-logging" rev="1.1.1"
conf="javadoc->javadoc;sources->sources;compile->default"/>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
这将我映射javadoc到Maven javadoc和我sources的Maven's sources.当我映射时conf="sources->default",它将我映射sources到Maven default,这是编译依赖项.
我可以在一行中指定所有配置,而且我不需要单独的<artifact>实体.
| 归档时间: |
|
| 查看次数: |
7007 次 |
| 最近记录: |