Надеюсь это поможет.

я есть 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 или если функциональность является внутренней по отношению к 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, и я хочу избежать предоставления большего количества файлов для управления в рамках процесса сборки. Если мне нужно, я буду, но я бы предпочел этого избежать!

Ответы на вопрос(1)

Ваш ответ на вопрос