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

kra*_*ade 8 ant dependencies jar project ivy

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

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

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

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

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

Mar*_*nor 3

你看过 ivy 任务构建列表吗?

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

   build.xml
   ivysettings.xml
   --> module1 --> build.xml
                   ivy.xml
   --> module2 --> build.xml
                   ivy.xml
   --> module3 --> build.xml
                   ivy.xml
Run Code Online (Sandbox Code Playgroud)

您的设置文件可以由所有项目共享。它声明您构建的模块在本地可用,其他所有内容都来自项目的所有用户可用的默认存储库(在本例中为 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>
Run Code Online (Sandbox Code Playgroud)

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