我在Ant文件中定義了一個POM,構建工作正常,從存儲庫中提取正確的工件,但是工件:安裝任務推送到「超級POM」,而不是POM我指定工件:安裝推送超級POM而不是POM我定義
我用下面的POM文件
<project name="my-proj" default="build"
xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<!-- Define the Maven tasks -->
<path id="mvn.classpath"
path="${env.MAVEN_HOME}/lib/maven-ant-tasks-2.1.1.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="mvn.classpath" />
<target name="set-deps">
<artifact:pom id="jar.pom" packaging="jar"
groupId="com.me" artifactId="my-proj"
version="1.0-SNAPSHOT">
<dependency groupId="commons-logging"
artifactId="commons-logging"
version="1.1.1"/>
</artifact:pom>
<artifact:dependencies filesetId="project.jar.files"
pomRefId="jar.pom"/>
</target>
<target name="compile" depends="set-deps">
<mkdir dir="${basedir}/output/casses"/>
<javac srcdir="${basedir}/src"
destdir="${basedir}/output/classes"
classpathref="project.jar.files" />
</target>
<target name="build" depends="compile">
<jar destfile="output/${project.name}.jar"
basedir="${basedir}/output/classes"/>
</target>
<target name="install" depends="build">
<echo message="Installing JAR file - ${project.name}.jar"/>
<echo message=" groupId - ${jar.pom.groupId}"/>
<echo message="artifactId - ${jar.pom.artifactId}"/>
<echo message=" version - ${jar.pom.version}"/>
<artifact:install file="${basedir}/output/${project.name}.jar"
pomRefId="jar.pom"/>
</target>
</project>
調用ant build
將建立正確的JAR文件,因此POM是由Ant腳本設置正確(在至少從依賴的角度來看)。
但是,調用ant install
會導致JAR作爲超級pom版本1.0安裝在本地存儲庫中。由於版本庫中已經存在完整版本(1.0,無SNAPSHOT),所以第二次安裝失敗,只有SNAPSHOT版本可以被覆蓋。
我已經在POM上設置了groupId/artifactId/version。他們怎麼沒被拾起?我已經嘗試在安裝任務中再次設置它們(考慮到可能存在未記錄的任務屬性),但是此任務不接受這些屬性。
事實上,在安裝之前會顯示正確的值,所以POM知道它是groupId/artifactId/version,但仍然無法使用這些設置進行安裝。
順便說一句,如果有任何幫助,我使用的是2.1.1 maven-ant-tasks JAR文件,但是我安裝的Maven版本是3.0.2(不確定這些任務是否會對Maven進行外部調用Jars或者如果該功能在ant任務Jar內部)。
PS。我已經嘗試將依賴關係放在外部POM文件中,這看起來很有效,pom.xml
只包含依賴關係和groupId/artifactId /版本(與上面定義的內存中的pom相同),該工件:pom更改爲:
<artifact:pom id="jar.pom" file="ant-pom.xml"/>
沒有其他變化,但ant install
現在正常工作。這是Maven-ant任務中的一個錯誤還是我缺少的東西?
我在哪裏工作,現在使用Ant,我想避免提供更多文件作爲構建過程的一部分進行管理。如果我需要我會的,但我寧願避免它!
沒關係。我閱讀Maven-ant-tasks iissues日誌,它已經記錄爲一個bug(問題170 - http://jira.codehaus.org/browse/MANTTASKS-170)。 – GKelly 2011-02-04 14:07:29