如何为项目/ lib中的本地jar创建Ivy依赖项?

时间:2010-02-05 20:14:30

标签: ant jar project dependencies ivy

我有几个jar文件,(其中一些依赖于彼此),我正在尝试让ivy为我的项目管理它们。

我不想创建“本地”(基于用户目录)存储库,因为我希望其他用户能够检出我的svn项目并在没有本地/共享存储库设置的情况下运行它。由于各种原因,我无法将这些文件添加到我们正在使用的实际存储库中。

项目取决于这些文件,我在SVN中使用它们。在过去,我有我正常的常春藤依赖xml文件。这些文件使用设置xml文件指向远程存储库。过去,在最后一刻,我让ant使用构建任务将这些文件从lib文件夹复制到内置文件夹中。这感觉就像一个破坏的滥用,忽略了常春藤文件系统解析器的功能。

(3个可构建项目的ivy.xml和build.xml在另一个基本目录中使用相同的ivysettings.xml。)

我觉得我90%的方式都存在,我应该在ivysettings.xml中指向我的文件系统解析器,以便在解析器链中首先解析projectdir / lib中的jar文件?

1 个答案:

答案 0 :(得分:3)

您是否看过常春藤任务buildlist

您可以使用它来控制3个模块的构建顺序。在构建每个模块时,它可以发布到本地存储库,确保jar及时存在于链中的下一个模块。

   build.xml
   ivysettings.xml
   --> module1 --> build.xml
                   ivy.xml
   --> module2 --> build.xml
                   ivy.xml
   --> module3 --> build.xml
                   ivy.xml

您可以由所有项目共享您的设置文件。它声明您构建的模块在本地可用,其他所有内容都来自项目所有用户可用的默认存储库(在本例中为Maven)

<ivysettings>
        <settings defaultResolver="maven2"/>
        <resolvers>
                <ibiblio name="maven2" m2compatible="true"/>

                <filesystem name="local">
                    <ivy pattern="${local.rep.dir}/.."/>
                    <artifact pattern="${local.rep.dir}/.."/>
                </filesystem>
        </resolvers>
        <modules>
                <module organisation="org.me" name="module1" resolver="local"/>
                <module organisation="org.me" name="module2" resolver="local"/>
                ..
        </modules>
</ivysettings>

最后,当您在外部发布时,您可以使用常春藤安装任务将您已在本地发布的模块复制到最终存储库位置