2010-03-30 18 views
10

Tengo el siguiente fragmento de código en mi pom.xml (POM completo se adjunta a continuación, que puede ser ejecutado)Maven Eclipse no añade una dependencia

<dependency> 
    <groupId>aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>1.5.3</version> 
</dependency> 

y en una de mis archivos Java que se refiere a una clase org.aspectj.lang.ProceedingJoinPoint. Cuando hago una "instalación limpia de mvn" compila y construye bien, pero cuando hago un eclipse: eclipse, e importo el proyecto en eclipse, me da un error The import org.aspectj cannot be resolved. Revisé el archivo .classpath que se generó y no tiene una entrada a este archivo. Intenté una "dependencia de mvn: árbol" y enumera esto bien.

No tengo ninguna configuración elegante para no compilar ningún archivo de Java. Es solo un pom de rutina lo que me desconcierta.

¿Puede alguien decirme qué está mal aquí?

ACTUALIZACIÓN 1: Estoy utilizando Maven eclipsar la versión plugin: 2.7

ACTUALIZACIÓN 2: Sólo tiene que utilizar pom abajo y hacer un mvn eclipse:clean eclipse:eclipse desde la línea de comandos

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.ekanathk</groupId> 
    <artifactId>stackoverflow</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.1</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>1.5.3</version> 
     </dependency> 
     <dependency> 
      <groupId>aspectj</groupId> 
      <artifactId>aspectjweaver</artifactId> 
      <version>1.5.3</version> 
     </dependency> 
    </dependencies> 
</project> 
+0

He intentado con el pom proporcionado y funcionó para mí. Por las dudas, ¿qué versión de Maven estás usando? –

+0

¿Estás seguro de que Eclipse está guardando el POM en el disco? –

Respuesta

4

Sólo traté de reproducir el problema y ... no pudo. Esta es la .classpath consigo después de añadir el aspectj: 1.5.3 dependencia a un proyecto recién creado:: aspectjrt: Tarro

<classpath> 
    <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/> 
    <classpathentry kind="src" path="src/main/java" including="**/*.java"/> 
    <classpathentry kind="output" path="target/classes"/> 
    <classpathentry kind="var" path="M2_REPO/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3.jar"> 
    <attributes> 
     <attribute value="jar:file:/home/pascal/.m2/repository/aspectj/aspectjrt/1.5.3/aspectjrt-1.5.3-javadoc.jar!/" name="javadoc_location"/> 
    </attributes> 
    </classpathentry> 
    <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
</classpath> 

¿Qué versión del plugin de Maven Eclipse está usando? ¿Lo configuró para usar AJDT? ¿Puedes mostrar tu configuración?

+0

Usando Maven eclipse plugin 2.7. ¿Cómo lo configuro para usar AJDT? Además, ¿no debería funcionar con la configuración cero? aspectj es solo otra biblioteca como decir log4j? –

+1

Simplemente agregando una dependencia al classpath es zero config (una vez en el pom), como se muestra arriba. Sin embargo, el complemento eclipse no puede adivinar si está usando AJDT o no, por lo que debe informarle (http://maven.apache.org/plugins/maven-eclipse-plugin/examples/ajdt-projects.html). Pero esto no resuelve el extraño problema de la ruta de clases. Por cierto, sugiero usar la versión 2.8. –

+0

Simplemente usando el plugin Maven eclipse 2.8 resuelve el problema. Odio los sistemas que intentan ser "demasiado inteligentes" de lo que se supone que son. En este caso, estaba inspeccionando un código y quería entrar en eclipse lo antes posible, pero cosas como estas son un dolor en el culo. –

8

Tuve un problema similar. Corriendo mvn eclipse:clean y luego mvn eclipse:eclipse ayudado.

+1

Ya lo he intentado y esto no ayuda –

+0

me lo arregló, gracias –

+0

todavía funcionaba como un encanto! ¡Gracias! – Nigul

7

Tuve un problema similar. El complemento Eclipse para maven asume que Eclipse tiene su propio soporte para AspectJ. Entonces necesita decirle que no tiene ninguno (o decirle qué versión tiene). Añadiendo

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-eclipse-plugin</artifactId> 
    <configuration> 
     <ajdtVersion>none</ajdtVersion> 
    </configuration> 
</plugin> 

a <build><plugins> sección debe ayudar.

+0

esto resolvió mi problema incluso sin actualizar al plugin maven-eclipse 2.8. ¡Gracias! – guido

+0

¡Bonito! Sin embargo, no estoy seguro de por qué esta respuesta está aquí.¡Es la única respuesta real a la pregunta en la página! :) – Steve

1

¿Ha intentado usar m2eclipse en su lugar? Tiende a producir resultados mucho mejores en mi experiencia.

Cuestiones relacionadas