артефакт: установка подталкивает супер-помпону вместо определяемого мной POM

У меня есть POM, определенный в файле Ant, сборка работает правильно, извлекая правильные артефакты из репозитория, однако, артефакт: задачи установки помещаются в 'super-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 в локальном репозитории как super-pom версии 1.0. повторная установка завершается ошибкой, поскольку полная версия (1.0, без SNAPSHOT) уже существует в репозитории, и только версии SNAPSHOT могут быть перезаписаны.

Я установил groupId / artifactId / version в POM. Почему их не забирают? Я попытался установить их снова в задаче установки (подумав, что, возможно, для задачи были недокументированные атрибуты), но эта задача не принимает эти атрибуты.

Фактически, правильные значения будут отображаться перед установкой, поэтому POM знает, что это groupId / artifactId / version, но все равно не удается установить с этими настройками.

Кстати, если это поможет, я использую файл JAR 2.1.1 maven-ant-tasks, но версия Maven у меня есть установлено 3.0. 2 (не уверен, делают ли задачи внешние вызовы Maven Jars или функциональность является внутренней для файла ant task Jar)

PS. Я попытался разместить зависимости во внешнем файле POM, и, похоже, это сработало, pom.xml не содержит ничего, кроме зависимостей и groupId / artifactId / version (то же самое, что и pom в памяти, определенный выше ), артефакт: pom изменяется на:

<artifact:pom id="jar.pom" file="ant-pom.xml"/>

Больше ничего не меняется, но ant install теперь работает правильно. Это ошибка в maven-ant-tasks или мне чего-то не хватает?

Там, где я сейчас работаю, используйте Ant, и я не хочу, чтобы в процессе сборки было больше файлов для управления. Если понадобится, я сделаю это, но я бы предпочел этого избежать!

7
задан GKelly 3 February 2011 в 15:18
поделиться