首页 文章

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

提问于
浏览
8

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

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

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

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

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

1 回答

  • 3

    你看过常 Spring 藤任务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>
    

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

相关问题