2010-03-30 109 views
10

我在我的pom.xml下面的代码段(全POM下面连接可以执行)Maven的Eclipse不添加一个依赖

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

,并在我的Java文件中的一个我是指一类org.aspectj.lang.ProceedingJoinPoint。当我做一个“mvn clean install”时,它编译并生成的很好,但是当我做一个eclipse:eclipse,并在eclipse中导入项目时,它给了我一个错误The import org.aspectj cannot be resolved。我检查了生成的.classpath文件,并且没有该文件的条目。我尝试了一个“mvn依赖:树”,它列出了这个罚款。

我没有任何花哨的设置不编译任何Java文件。这只是一个常常让我感到困惑的东西。

有人能告诉我这里出了什么问题吗?

更新1:我使用Maven的Eclipse插件版本:2.7

更新2:只需要用下面POM和命令行做一个mvn eclipse:clean eclipse:eclipse

<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

我试着用提供的pom,它为我工作。以防万一,你使用的是什么版本的Maven? – 2010-03-30 11:03:42

+0

你确定POM正在被Eclipse保存到磁盘? – 2010-03-30 11:10:49

回答

4

我只是想重现问题, ......不能。这是.classpath添加的AspectJ后,我得到:aspectjrt:罐子:1.5.3依赖于一个刚创建的项目:

<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> 

什么版本maven的eclipse插件您使用的是?你配置它使用AJDT吗?你能展示你的配置吗?

+0

使用Maven eclipse插件2.7。我如何配置它以使用AJDT?另外,它不应该与零配置工作。 aspectj只是另一个类似说log4j的库吗? – 2010-03-30 10:43:34

+1

只需向类路径添加一个依赖关系就是零配置(一次在pom中),如上所示。然而,eclipse插件无法猜测您是否使用AJDT,因此您必须告诉他(http://maven.apache.org/plugins/maven-eclipse-plugin/examples/ajdt-projects.html)。但是这并不能解决奇怪的类路径问题。顺便说一句,我建议使用2.8版。 – 2010-03-30 11:00:27

+0

只需使用Maven eclipse插件2.8即可解决问题。我只讨厌那些试图成为“过于聪明”的系统。在这种情况下,我正在检查一些代码,并希望尽快进入eclipse,但像这样的事情是***中的一个痛苦。 – 2010-03-30 11:11:33

8

我有类似的问题。运行mvn eclipse:clean,然后mvn eclipse:eclipse帮助。

+1

我已经尝试过这一点,这并没有帮助 – 2010-03-30 10:55:11

+0

修复了我,谢谢 – 2012-04-27 09:36:25

+0

仍然像一个魅力工作!谢谢! – Nigul 2014-06-30 12:19:44

7

我有类似的问题。 Maven的Eclipse插件假设Eclipse对AspectJ有自己的支持。所以你需要告诉它你没有(或者告诉它你有哪个版本)。添加

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

<build><plugins>部分应该有所帮助。

+0

即使没有升级到2.8 maven-eclipse插件,这也解决了我的问题。谢谢! – guido 2011-05-17 10:07:53

+0

不错的一个!不知道为什么这个答案在这里。这是网页上问题的唯一实际答案! :) – Steve 2012-12-12 17:26:01

1

你试过用m2eclipse代替吗?我的经验往往会产生更好的结果。