使用常春藤和蚂蚁将jar上传到nexus sonatype repo

时间:2012-04-11 17:09:35

标签: ant ivy

我正在尝试使用ivy with ant将我的项目工件发布到nexus sonatype存储库。 使用三个文件: 1> - build.xml

<project name="abc" basedir="." 

default="create-jar" xmlns:ivy="antlib:org.apache.ivy.ant">

<property name="build.dir" value="classes"/>

<property name="src.dir" value="src"/>

<property name="webinf.dir" value="../WEB-INF"/>

<property name="weblib.dir" value="${webinf.dir}/lib"/>

<path id="master-classpath">

<fileset dir="${weblib.dir}">

<include name="*.jar"/>

</fileset>

</path>

<target name="clean" description="Clean output dirs (build, weblib, dist)">

<delete dir="${build.dir}"/>

<mkdir dir="${build.dir}"/>

<delete dir="dist"/>

<mkdir dir="dist"/>

</target>

<target name="create-jar" depends="clean">

<javac destdir="${build.dir}" source="1.5" target="1.5" debug="true" deprecation="false" optimize="false" failonerror="true" nowarn="true">

<classpath refid="master-classpath"/>

<src path="${src.dir}"/>

</javac>

<jar destfile="dist/mws-pojos.jar" basedir="${build.dir}"/>

</target>

<target name="prepare" description="Generate POM" depends="create-jar">

<!-- Optional: Intermediate file containing resolved version numbers -->

<!--ivy:deliver deliverpattern="${build.dir}/ivy.xml" pubrevision="${publish.revision}" status="release"/-->
<!-- Generate the Maven POM -->
<ivy:makepom ivyfile="ivy.xml" pomfile="test.pom"/>
</target>
<target name="resolve" description="retreive dependencies with ivy"
depends="publish">
<ivy:retrieve />
</target>
<target name="publish" depends="prepare,create-jar" 
description="Upload to Nexus">
<ivy:publish organisation="my.org" module="mws-pojos" 
revision="1.0" resolver="nexus-deploy" 
pubrevision="${publish.revision}"             
overwrite="true" publishivy="false" >
<artifacts pattern="${build.dir}/[artifact](-[classifier]).[ext]"/>
</ivy:publish>
</target>
</project>

2 - &GT;的ivy.xml

<ivy-module version='2.0' xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="my.org" module="mws-pojos" revision="1.0"/>
<publications>
<artifact name="mws-pojos" type="jar" e:classifier="disto"/>
</publications>
</ivy-module>

3 - &GT; ivysettings.xml

<ivysettings>
<settings defaultResolver="nexus-central"/>
<credentials host="http://somehost/nexus" realm="Sonatype Nexus Repository Manager" username="user1" passwd="deploy"/>
<resolvers>
<ibiblio name="nexus-central" root="http://somehost/nexus/content/repositories/central/" m2compatible="true"/>
<ibiblio name="nexus-deploy" root="http://somehost/nexus/content/repositories/repo" m2compatible="true"/>
</resolvers>
</ivysettings>

但是在编译时会出现以下错误:

BUILD FAILED

/home/someuser/mobilewebservice/mws-pojos/build.xml:40: impossible to publish artifacts for mmt#mws-pojos;1.0: java.lang.IllegalStateException: ivy file not found in cache for mmt#mws-pojos;1.0: please resolve dependencies before publishing (/home/someuser/.ivy2/cache/resolved-mmt-mws-pojos-1.0.xml)

at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:105)

at org.apache.ivy.Ivy.publish(Ivy.java:600)

at org.apache.ivy.ant.IvyPublish.doExecute(IvyPublish.java:311)

at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:277)

at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)

1 个答案:

答案 0 :(得分:1)

您需要额外的resolve

<ivy:resolve>...</ivy:resolve>

发布之前。