我刚刚下载了 OEPE (Kepler) 并安装了 m2e 和 m2e-wtp 连接器。我发现在这个路径下:Preferences -> Maven->Lifecycle mappings->Open workspace生命周期映射数据有一个预配置的xml文件,它说maven应该忽略AspectJ的编译目标,我认为这就是AspectJ运行时库的原因未添加到项目中,因此该项目未被 Eclipse 识别为 AspectJ 项目。
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<versionRange>1.6</versionRange>
<goals>
<goal>compile</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
我在 xml 文件中注释掉了这些行并再次重新加载它。现在 IDE 不会在生命周期中忽略 AspectJ 插件标签,但 pom 文件抱怨它无法识别执行标签。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
使用 indigo,m2e-wtp 能够识别<execution>
aspectj 插件的标签,并能够自动将 AspectJ 运行时库添加到项目中,尽管在 Kepler 中并非如此。(我认为从 pom 中制作一个 AspectJ 项目是 m2e-wtp 的工作,但不太确定。)
顺便提一句。我怎样才能让事情像在 Indigo 中一样工作?我知道我可以右键单击该项目并将其转换为方面项目以解决问题,但我希望 IDE 和插件从 pom 文件中认识到该项目需要 AspectJ jar。任何想法?