如何在subversion repo中包含Ivy Dependency

时间:2012-09-20 15:29:29

标签: java eclipse apache ivy ivyde

因此,由于我无法通过包含来自外部源的所有内容来找到解决依赖性问题的方法,因此我转而使用Eclipse / IvyDE进行ant / Ivy集成。

话虽如此,我通常会包含这样的lib:

<dependency org="org.jsoup" name="jsoup" rev="1.6.3"/>

但是,如果我想查看自己内部网中的内容,该怎么办?

例如,如果持有jar的文件夹是这样的:

https://prdsvn01.company.intra.net/repo/libName/

我希望将lib.jar包含到我的文件夹中。

我已经相对无法在eclipse的这个实现中找到ivysettings.xml,我也不相信如果可以的话我能够做到正确。

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

以下常春藤设置文件:

<ivysettings>
    <settings defaultResolver="central"/>

    <resolvers>
        <ibiblio name="central" m2compatible="true"/>

        <url name="my-repo">
            <artifact pattern="http://myserver/myrepo/[organisation]/[artifact]/[revision]/[artifact].[ext]"/>
        </url>
    </resolvers>

    <modules>
        <module organisation="org.mycompany" resolver="my-repo"/>
    </modules>
</ivysettings>

配置为默认从Maven Central检索工件,以及从HTTP服务器检索本地工件。

更新

的ivy.xml

常春藤文件没什么特别之处。只需声明依赖关系以及将它们与之关联的配置:

<configurations>
    <conf name="compile" description="Required to compile application"/>
</configurations>

<dependencies>
    <!-- compile dependencies -->
    <dependency org="org.slf4j" name="slf4j-api" rev="1.6.4" conf="compile->default"/>
    <dependency org="org.mycompany" name="my-module" rev="1.0" conf="compile->default"/>

</dependencies>

注意:

  • 使用配置是常春藤的最佳做法。

的build.xml

<target name="resolve" dependencies="Resolve build dependencies">
    <ivy:resolve/>

    <ivy:report todir='build/reports' graph='false' xml='false'/>

    <ivy:cachepath pathid="compile.path" conf="compile"/>
    ..  
</target>

注意:

  • ivycachepath任务将常春藤配置转换为填充的ANT类路径。非常有用。
  • 常春藤报告任务会告诉您类路径上的jar

常春藤解决构建输出

所有魔法都在设置文件中。运行构建会产生以下结果:

[ivy:resolve]   found org.slf4j#slf4j-api;1.6.4 in central
[ivy:resolve]   found org.mycompany#my-module;1.0 in my-repo
..
[ivy:resolve] downloading http://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4.jar ...
..
[ivy:resolve] downloading http://myserver/myrepo/org.mycompany/my-module/1.0/my-module.jar ...

注意:

  • my-repo 解析程序用于带有“org.mycompany”groupId的模块。
  • 其他一切都来自默认解析器Maven Central。