4

我想将一个 Java 库用作构建的一部分,但它包含一个外部resources/目录,该目录必须对运行时类路径可见才能工作。我希望能够将它作为工件存储在我的 Ivy 存储库中,但不确定 Ivy 是否可以处理这个问题,如果可以,如何安装ivy.xml文件ivy-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

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

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

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

4

1 回答 1

2

您应该 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>
于 2012-10-05T07:22:47.217 回答