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