本地仓库的良好Ivy教程?

45

有没有好的教程可以指导我如何使用Ivy创建并使用本地仓库?(请不要给我提供Ivy文档,那些教程相当混乱)

我需要创建一个本地仓库,以包含那些在公共Maven仓库中不一定可用的.jar文件。


我认为周围没有太多合适的教程。对于不在公共Maven存储库中的.jar文件,您可以使用<publish/>任务。实际上,我发现将.jars简单地复制到正确的位置并手动编辑ivy.xml文件更容易。 - leonm
2
有趣的问题。我们本地的Ivy存储库是多年来逐渐建立起来的,现在一团糟。 - skaffman
10
+1代表“请不要给我指向Ivy文档,教程相当令人困惑”。我发现学习如何在Ivy中做基本事情非常困难。 - jwaddell
3个回答

45

创建本地Ivy仓库很简单,不需要使用Maven。以下是使用独立程序发布一些文本文件的Ivy示例。

我有3个文件需要发布:

src/English.txt
src/Spanish.txt
src/Irish.txt

ivy文件src/ivy.xml详细说明了模块的名称和要发布的艺件列表。(发布索引)

<ivy-module version="2.0">
  <info organisation="myorg" module="hello"/>
  <publications>
    <artifact name="English" ext="txt" type="doc"/>
    <artifact name="Irish" ext="txt" type="doc"/>
    <artifact name="Spanish" ext="txt" type="doc"/>
  </publications>
</ivy-module>

你还需要一个ivy设置文件,告诉ivy存储库的位置。

<ivysettings>
    <property name="repo.dir" value=".../repo"/>
    <settings defaultResolver="internal"/>
    <resolvers>
        <filesystem name="internal">
            <ivy pattern="${repo.dir}/[module]/ivy-[revision].xml" />
            <artifact pattern="${repo.dir}/[module]/[artifact]-[revision].[ext]" />
        </filesystem>
    </resolvers>
</ivysettings>

最后,运行Ivy发布版本1.0:

java -jar $IVY -settings config/ivysettings.xml \
        -ivy src/ivy.xml \
        -publish internal \
        -publishpattern "src/[artifact].[ext]" \
        -revision 1.0 \
        -status release \
        -overwrite 

注意发布模式。它告诉ivy要发布的文件位于哪里。

添加:从ANT内部发布

<target name="publish" depends="clean,package" description="Publish this build into repository">
    <ivy:publish pubrevision="${pub.version}" status="${pub.status}" resolver="${pub.resolver}" >
        <artifacts pattern="${build.dir}/dist/[artifact].[ext]"/>
    </ivy:publish>
</target>

很好的回答!你知道在Ant任务中我们可以从哪里获取相同的“发布”信息吗?那些“官方”的任务文档非常令人困惑。 - Ralph
1
是的,我经常使用ivy publish任务,将项目发布到我的Nexus Maven存储库中。实际上,ivy网站缺少更多的示例文档。我发现一旦你弄清楚了ivy的工作原理,它对参考是没问题的 :-( - Mark O'Connor
9
不要说这很容易,因为它并不是。如果真的那么容易,我就已经自己找出如何做了。 - Arne
1
明白了。Maven 也不是一件容易的事情 :-) - Mark O'Connor

2

谢谢,我不是在寻找软件工具,只是想学习如何使用我已经拥有的工具。 - Jason S

0
你可能想要考虑创建一个私有的Maven仓库,可以在本地机器上或内部网络中进行。然后使用Maven将这些非公共资源部署到该仓库中。Ivy与Maven仓库集成,因此您可以在编译时从中拉取这些资源。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接