artefato: install empurra o super pom em vez do POM que eu defino
Eu tenho um POM definido no arquivo Ant, a compilação funciona corretamente, puxando os artefatos corretos do Repositório, no entanto, o artefato: instale tarefas carrega para 'super pom' em vez do pom que eu especificar
Eu uso o seguinte arquivo 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>
Chamandoant build
criará o arquivo JAR corretamente, para que o POM esteja sendo configurado corretamente pelo script Ant (pelo menos do ponto de vista da dependência).
No entanto, chamarant install
resulta na instalação do JAR no repositório local como super-pom versão 1.0. a instalação de uma segunda vez falha porque uma versão completa (1.0, nenhum SNAPSHOT) já existe no repositório e apenas as versões do SNAPSHOT podem ser substituídas.
Eu configurei o groupId / artifactId / version no POM. Como é que eles não estão sendo apanhados? Tentei configurá-los novamente na tarefa de instalação (pensando que talvez houvesse atributos não documentados para a tarefa), mas essa tarefa não aceita esses atributos.
De fato, os valores corretos serão exibidos antes da instalação, portanto, o POM sabe que é groupId / artifactId / version, mas ainda falha na instalação usando essas configurações.
BTW, se for de alguma ajuda, estou usando o arquivo JAR do maven-ant-tasks 2.1.1, mas a versão do Maven que instalei é a 3.0.2 (não tenho certeza se as tarefas fazem chamadas externas para o Maven Jars ou se o funcionalidade é interna à tarefa ant) Jar).
PS. Tentei colocar as dependências em um arquivo POM externo e isso parece funcionar, opom.xml
contém nada além das dependências e do groupId / artifactId / version (igual ao pom na memória definido acima), o artifact: pom muda para:
<artifact:pom id="jar.pom" file="ant-pom.xml"/>
Nada mais muda, masant install
agora funciona corretamente. Isso é um bug nas tarefas do maven-form ou há algo que estou perdendo?
Onde estou trabalhando agora, use o Ant e quero evitar fornecer mais arquivos para serem gerenciados como parte do processo de compilação. Se eu precisar, sim, mas prefiro evitá-lo!