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