将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