我来自Maven背景。我正在开发的项目不是基于Java的。但是,要求使用独立Ivy进行依赖关系管理。存储库管理器是Nexus。
该项目产生了几个zip工件,需要通过独立的Ivy将它们部署到Nexus。我想要一个Maven分类器的类比,但是对于Ivy。
这是我的ivysettings.xml:
<ivysettings>
<settings defaultResolver="nexus"/>
<credentials host="localhost"
realm="Sonatype Nexus Repository Manager"
username="user"
passwd="pass"/>
<property name="nexus-public"
value="http://localhost:8081/nexus/content/groups/public"/>
<property name="nexus-releases"
value="http://localhost:8081/nexus/content/repositories/releases"/>
<property name="nexus-snapshots"
value="http://localhost:8081/nexus/content/repositories/snapshots"/>
<resolvers>
<ibiblio name="nexus"
m2compatible="true"
root="${nexus-public}"/>
<ibiblio name="nexus-releases"
m2compatible="true"
root="${nexus-releases}"/>
<ibiblio name="nexus-snapshots"
m2compatible="true"
root="${nexus-snapshots}"
checkmodified="true"
changingPattern="*-SNAPSHOT"/>
</resolvers>
</ivysettings>
我有以下ivy.xml:
<ivy-module version="2.0">
<info organisation="kung.fu" module="ninja" revision="1.2.3"/>
<publications>
<artifact name="ninja" type="zip" ext="zip"/>
<artifact name="ninja" type="win32" ext="zip"/>
<artifact name="ninja" type="linux-x32" ext="zip"/>
<artifact name="ninja" type="linux-x64" ext="zip"/>
</publications>
</ivy-module>
我正在尝试按如下方式部署到Nexus:
java -jar /path/to/ivy.jar
-settings /path/to/.ivy/ivysettings.xml
-ivy ivy.xml
-publish nexus-releases
-publishpattern "target/[artifact]-[revision](-[classifier]).[ext]"
-revision 1.2.3
-status released
-overwrite
我做错了什么?
答案 0 :(得分:3)
我认为你错过了分类器字段的特殊extra attribute。
此外,您还需要生成并上传Maven POM文件。不幸的是,命令行工具不支持这个......
请参阅:
独立jar旨在支持发布到存储库,但隐含的理解是它是常春藤存储库....
这解释了推送常春藤文件的原因,它是常春藤模块所需的模块元数据文件。另一方面,Maven使用POM文件作为模块元数据,这需要创建并发布到Maven存储库。
如果你是在ANT中完成所有这些工作,那么你有makepom任务自动生成POM文件,而常春藤publish任务有一个“publishivy”属性,可以用来压制上传ivy.xml文件。