将AspectJ添加到pom.xml改为使用Maven的Java版本,为什么?

更新:这是我的maven-compiler-plugin配置:

 org.apache.maven.plugins maven-compiler-plugin 2.3.2  1.6 1.6  

我在使用Maven构建的多项目应用程序上工作。 我们决定添加AspectJ,所以我将以下代码添加到顶级项目中的pom.xml :(来自官方文档)

  ...  ...  org.aspectj aspectjrt 1.7.3  ...  ...    org.codehaus.mojo aspectj-maven-plugin 1.5    compile  test-compile      ...   ...  

以及每个下属项目的以下片段:

  ...  ....  ...  org.codehaus.mojo aspectj-maven-plugin     ...  org.aspectj aspectjrt  ....  ...  

不知怎的,这个修改已经覆盖了我使用的Java版本。 如果我运行build我会得到多个这样的错误:

语法错误,注释仅在源级别为1.5或更高时可用

这让我怀疑我的Java版本(原来是1.6)以某种方式还原为1.4。 我什么也没做 – 至少不是故意的 – 可能影响Java版本,所以我怀疑上面提到的AspectJ相关代码负责改变。

我的问题是AspectJ如何改变Java版本以及如何解决这个问题。 或者我是否完全误解了一些事情,我是否走错了路?

我认为问题在于aspectj-maven-plugin的默认source , target和complianceLevel设置(根据之前链接的文档,分别为1.4,1.2和1.4)。 您应该在父pom中明确设置它们:

    org.codehaus.mojo aspectj-maven-plugin 1.5   1.6 1.6 1.6     compile test-compile     ...   

我失踪了

 ${java.level} 

在我的pom.xml中

如果您没有定义版本,则编译器插件假定您的Java源代码符合Java 1.3并且您的目标是Java 1.1 JVM。

也许,你应该定义它:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

您可以找到aspectj的最新版本的dependecy和plugin 。

我错过了我的pom属性顶部的jdk版本的java版本。

  org.codehaus.mojo aspectj-maven-plugin 1.2     org.aspectj aspectjrt ${aspectj.version}   org.aspectj aspectjtools ${aspectj.version}     process-sources   compile test-compile     true ${jdk.version}  ${jdk.version}    

在我的pom.xml的顶部,我设置了jdk.version属性,如,

  1.7