【问题标题】:How to create an Ivy dependency for local jars inside your project/lib?如何为项目/lib 中的本地 jar 创建 Ivy 依赖项?
【发布时间】:2011-01-13 16:26:04
【问题描述】:

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

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

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

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

我觉得我已经完成了 90% 的工作,我应该在 ivysettings.xml 中将我的文件系统解析器指向什么,以便在解析器链中进行第一次解析,检查 projectdir/lib 中的 jar 文件?

【问题讨论】:

    标签: ant jar project dependencies ivy


    【解决方案1】:

    你看过常春藤任务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 任务将您已经在本地发布的模块复制到最终存储库位置

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      相关资源
      最近更新 更多