我想将一个Java库用作构建的一部分,但它包含一个外部resources/
目录,该目录必须对运行时类路径可见才能工作。我希望能够将它作为一个工件存储在我的Ivy存储库中,但不确定Ivy是否可以处理这个问题,如果是的话,如何装配ivy.xml
,ivy-settings.xml
文件,以及回购本身。
我的repo实际上是一个Artifactory服务器,我将工件及其常春藤文件存储在彼此旁边:
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/
目录作为常春藤解析/检索模式的一部分拉下来,然后将resources/
放在我需要的位置。
这可能吗?有任何想法吗?提前谢谢!
编辑 - 如果resources/
是一个目录导致问题,我不介意将其解压缩为resources.zip
,然后将其解析/检索到我在构建时的项目,然后解压缩它。如果Ivy无法处理开箱即用的目录工件,那还有更多工作要做。
答案 0 :(得分:2)
您应该压缩/ 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>