2011-09-07 12 views
8

que necesitan utilizar XML a JSON lib en mi guerra. Seguí un tutorial explicando que se requieren dependencias en el proyecto.Ant/Eclipse se queja de artefacto: dependencias

Pero cuando agrego lo siguiente en mi hormiga build.xml (el archivo utilizado para crear la guerra), Eclipse se queja de la artifact:dependencies, parece que no le gusta el : .I tienen el siguiente mensaje de error:

El prefijo artifact para el elemento artifact:dependencies no está obligado ...

<artifact:dependencies filesetId="dependency.fileset" 
    sourcesFilesetId="sources.dependency.fileset" 
    javadocFilesetId="javadoc.dependency.fileset" 
    versionsId="dependency.versions"> 
    <!-- DEPENCIES GO HERE --> 
</artifact:dependencies> 

Alguna idea?

ACTUALIZACIÓN

Tengo el mismo problema al intentar definir un pom en memoria con:

<artifact:pom id="mypom" groupId="org.acme" artifactId="project1" version="1.0"> 
    <dependency groupId="junit" artifactId="junit" version="4.1"/> 
    <dependency groupId="org.codehaus.plexus" artifactId="plexus-utils" version="1.5.5"/> 
    <license name="apache" url="http://www.apache.org"/> 
</artifact:pom> 

El prefijo artifact para el elemento artifact:pom no está obligado ...

ACTUALIZACIÓN 2

He instalado frasco experto en hormigas ant/lib y cambiar el build.xml ya que contiene la definición de la materia artefacto pero tengo un mensaje de error durante la ejecución de la misma.

<project name="test" default="install" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

<artifact:dependencies pathId="dependency.classpath"> 
    <dependency> 
     <groupId>net.sf.json-lib</groupId> 
     <artifactId>json-lib</artifactId> 
     <version>2.3</version> 
     <type>jar</type> 
     <classifier>jdk15</classifier> 
     <scope>compile</scope> 
     </dependency> 
     ... 

El mensaje de error Eclipse dio es:

BUILD FAILED 
D:\J2EE\workspace\Test\build.xml:3: Problem: failed to create task or type antlib:org.apache.maven.artifact.ant:dependencies 
Cause: The name is undefined. 
Action: Check the spelling. 
Action: Check that any custom tasks/types have been declared. 
Action: Check that any <presetdef>/<macrodef> declarations have taken place. 
No types or tasks have been defined in this namespace yet 
This appears to be an antlib declaration. 
    Action: Check that the implementing library exists in one of: 
    -D:\eclipse\plugins\org.apache.ant_1.8.2.v20110505-1300\lib 
    -C:\Documents and Settings\luc\.ant\lib 
    -a directory added on the command line with the -lib argument 

El tarro experto-ant existe en -D:\eclipse\plugins\org.apache.ant_1.8.2.v20110505-1300\lib

ACTUALIZACIÓN 3

Este es el archivo build.xml I estoy usando

<!-- 
<project name="Monitoring" default="install" xmlns:artifact="urn:maven-artifact-ant" xmlns:test="urn:test-tasks"> 
--> 
<project name="Monitoring" default="install" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

<!-- project-specific variables --> 
<property environment="env" /> 
<property name="project_home" value="D:\J2EE\workspace\Monitoring"/> 
<property name="webapp.dir" value="${project_home}/target" /> 
<property name="jboss.dir" value="D:\J2EE\jboss\standalone\deployments" /> 
<property name="package.name" value="monitoring.war" /> 
<property name="lib.dir" value="${project_home}/lib" /> 
<property name="src.dir" value="${project_home}/src" /> 
<property name="resources.dir" value="${project_home}/resources" /> 
<property name="dest.dir" value="${project_home}/target" /> 
<property name="package.file" value="${dest.dir}/${package.name}" /> 

<!-- put everything in a temp folder with the right structure during the build --> 
<property name="temp.dir" value="${project_home}/temp" /> 
<property name="temp.dir.web-inf" value="${temp.dir}/WEB-INF" /> 
<property name="temp.dir.lib" value="${temp.dir.web-inf}/lib" /> 
<property name="temp.dir.classes" value="${temp.dir.web-inf}/classes" /> 
<property name="temp.dir.meta-inf" value="${temp.dir}/META-INF" /> 


<path id="build.class.path"> 
    <fileset dir="${env.JAVA_HOME}/lib"> 
     <include name="**/*.jar" /> 
    </fileset> 
    <fileset dir="D:\ant\lib"> 
      <include name="**/*.jar" /> 
    </fileset> 
</path> 

<target name="deps"> 
    <artifact:dependencies pathId="dependency.classpath"> 
     <dependency> 
      <groupId>net.sf.json-lib</groupId> 
      <artifactId>json-lib</artifactId> 
      <version>2.3</version> 
      <type>jar</type> 
      <classifier>jdk15</classifier> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>xom</groupId> 
      <artifactId>xom</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </artifact:dependencies> 
</target> 

<target name="clean" depends="deps"> 
    <delete> 
     <fileset dir="${dest.dir}" includes="**/*"/> 
    </delete> 
    <delete dir="${temp.dir}" /> 
    <delete dir="${temp.dir.classes}" /> 
    <delete dir="${temp.dir.meta-inf}" /> 
    <delete dir="${temp.dir.web-inf}" /> 
</target> 

<target name="prepare" depends="clean"> 
    <mkdir dir="${dest.dir}" /> 
    <mkdir dir="${temp.dir}" /> 
    <mkdir dir="${temp.dir.lib}" /> 
    <mkdir dir="${temp.dir.meta-inf}" /> 
    <mkdir dir="${temp.dir.web-inf}" /> 
    <mkdir dir="${temp.dir.classes}" /> 
</target> 

<!-- COMPILE --> 
<target name="compile" depends="prepare"> 
    <echo>=== COMPILE ===</echo> 
    <echo>Compiling ${src.dir} files ...</echo> 
    <javac debug="on" srcdir="${src.dir}" destdir="${temp.dir.classes}" includes="**/*" includeantruntime="false"> 
     <classpath refid="build.class.path" /> 
     <classpath refid="dependency.classpath" /> 
    </javac> 
</target> 

<!-- PACKAGE --> 
<target name="package" depends="compile"> 
    <echo>=== PACKAGE ===</echo> 

    <!-- copy the config files --> 
    <copy file="${resources.dir}/web.xml" tofile="${temp.dir.web-inf}/web.xml" overwrite="true" /> 
    <copy file="${resources.dir}/manifest.mf" tofile="${temp.dir.meta-inf}/manifest.mf" overwrite="true" /> 
    <copy todir="${temp.dir.classes}"> 
    <fileset dir="${src.dir}"> 
     <include name="**/*.xml"/> 
     <include name="**/*.xsl"/> 
    </fileset> 
    </copy> 

    <!-- the ant war task. with all resources in place, create the war file --> 
    <war destfile="${package.file}" webxml="${temp.dir.web-inf}/web.xml" basedir="${temp.dir}"> 
    <lib dir="${lib.dir}" /> 
    <classes dir="${temp.dir.classes}" /> 
    </war> 
</target> 

<!-- INSTALL --> 
<target name="install" depends="package"> 
    <echo>=== INSTALL ===</echo> 
    <copy file="${package.file}" tofile="${webapp.dir}/${package.name}" overwrite="true" /> 
    <copy file="${package.file}" tofile="${jboss.dir}/${package.name}" overwrite="true" />   
</target> 

</project> 

Funcionaba bien antes de agregar todas las dependencias ... todavía no puedo encontrar el archivo pb aquí. Cualquier ayuda sería bienvenida.

Respuesta

12

Parece que usted está haciendo uso de Maven Ant Tasks. Para hacer esto, necesitará una copia del contenedor desde el área de descarga here. Una vez (o si) lo tiene, tendrá que modificar su archivo de compilación para usarlo.

Las principales cosas que son are needed para definir el espacio de nombres artifact, y añadir el typedef para la hormiga-lib:

<project name="foo" default="foo" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> 

    <path id="maven-ant-tasks.classpath" path="lib/maven-ant-tasks-2.1.3.jar" /> 
    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" 
     uri="antlib:org.apache.maven.artifact.ant" 
     classpathref="maven-ant-tasks.classpath" /> 
+0

gracias. He hecho lo que recomienda, pero todavía tengo algunos problemas. He actualizado la pregunta para agregar los detalles. – Luc

+0

@Luc: muchas disculpas, creo que la muestra a la que hice referencia no era para nada ideal. Agregué un enlace a la muestra adecuada y actualicé el XML de muestra anterior. El bit que falta es typedef. –

+0

Gracias por mencionar define ese namescape. De alguna manera se perdió eso. – stevebot

0

que tenían el mismo mensaje de error, pero la causa era diferente.

ir a Ventana -> Preferencias -> Ant -> Tiempo de ejecución y el establecimiento de hormiga Inicio resolvió mi problema.

Así que para cualquier persona que la solución anterior no funcione, compruebe si "Ant Home" apunta hacia la dirección correcta

Cuestiones relacionadas