【问题标题】:How to use Ivy to get artifacts other than JARs?如何使用 Ivy 获取 JAR 以外的工件?
【发布时间】:2012-09-26 02:20:30
【问题描述】:

我想在构建过程中使用一个 Java 库,但它包含一个外部 resources/ 目录,该目录必须对运行时类路径可见才能工作。我希望能够将它作为工件存储在我的 Ivy 存储库中,但不确定 Ivy 是否可以处理这个问题,如果可以,如何安装 ivy.xmlivy-settings.xml 文件以及回购本身。

我的 repo 实际上是一个 Artifactory 服务器,我将工件及其 ivy 文件存储在一起:

http://myrepo.com:8080/artifactory/simple/myrepo/
    google/
        guice/
            3.0/
                guice-3.0.jar
                ivy.xml

等等。我想我在这里寻找类似的设置:

http://myrepo.com:8080/artifactory/simple/myrepo/
    fizz/
        buzz/
            1.7/
                buzz-1.7.jar
                resources/
                ivy.xml

...并以某种方式将 jar 及其 resources/ 目录作为 Ivy 解析/检索模式的一部分,然后将 resources/ 放在我需要它的位置。

这可能吗?有任何想法吗?提前致谢!

编辑 - 如果resources/ 是一个目录这一事实导致了问题,我不介意将其压缩为resources.zip,然后在构建时将其解析/检索到我的项目中,然后解压缩。如果 Ivy 不能开箱即用地处理目录工件,那就需要做更多的工作。

【问题讨论】:

    标签: java ant ivy dependency-management


    【解决方案1】:

    您应该 zip/tar 目录并创建以下设置:

    http://myrepo.com:8080/artifactory/simple/myrepo/
        fizz/
            buzz/
                1.7/
                    buzz-1.7.jar
                    resources-1.7.zip
                    ivy-1.7.xml
    

    然后,在您的 ivy.xml 中,您可以将每个文件声明为该模块的发布,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <ivy-module version="2.0">
        <info organisation="fizz"
            module="buzz"
            revision="1.7"
            status="release"
            publication="20110531150115"
            default="true"
        />
        <configurations>
            <conf name="default" visibility="public"/>
        </configurations>
        <publications>
          <artifact name="buzz"      type="jar" />
          <artifact name="resources" type="zip" />
        </publications>
    </ivy-module>
    

    如果需要,您可以定义单独的配置,例如:

        <configurations>
                <conf name="default" extends="jar, resources" visibility="public"/>
                <conf name="jar" visibility="public"/>
                <conf name="resources" visibility="public"/>
        </configurations>
        <publications>
          <artifact name="buzz"      type="jar" conf="jar"/>
          <artifact name="resources" type="zip" conf="resources"/>
        </publications>
    

    【讨论】:

    • 谢谢 - @oers 的好建议!
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2011-07-03
    相关资源
    最近更新 更多