当前位置: 首页 > 面试题库 >

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

郜驰
2023-03-14
问题内容

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

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.6</source>
            <target>1.6</target>
        </configuration>

我使用Maven构建一个多项目应用程序。我们决定添加AspectJ,因此我pom.xml在顶级项目中添加了以下代码:(来自官方文档)

<project>
  ...
  <dependencies>
    ...
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjrt</artifactId>
      <version>1.7.3</version>
    </dependency>
    ...
  </dependencies>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>    <!-- use this goal to weave all your main classes -->
              <goal>test-compile</goal> <!-- use this goal to weave all your test classes -->
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  <build>
  ...
</project>

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

</project>
      ...  
      <build>
        ....
           <plugins>
               ...
            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            </plugin>
         </plugins>
    </build>

        <dependencies>
          ...
         <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
         </dependency>
         ....
      </dependencies>
     ...  
 </project>

某种程度上,此修改已覆盖了我使用的Java版本。如果我运行构建,则会收到多个错误,如下所示:

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

这使我怀疑我的Java版本(最初为1.6)已以某种方式还原为1.4。我没有做任何事情-至少是无意的-
可能会影响Java版本,因此我怀疑上面提到的与AspectJ相关的代码是造成更改的原因。

我的问题是AspectJ如何更改Java版本以及如何解决此问题。还是我完全误解了某些东西,我走错了路?


问题答案:

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

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.5</version>
            <!-- new configuration is here -->
            <configuration>
                <complianceLevel>1.6</complianceLevel>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        ...
    </plugins>
<build>


 类似资料:
  • 问题内容: 我像这样将JBoss Maven存储库添加到我的pom.xml文件中… 我像这样添加了Hibernate本身… 但是,当我尝试构建我的应用程序时,会看到此错误…。 问题答案: 正如Seanizer所提到的,工件是一种类型的聚合模块(它聚合HibernateCore模块)。因此,您确实可以通过指定来依赖它。但是我个人会声明对所需模块的依赖,例如对于HibernateEntity Mana

  • 问题内容: 我正在使用Eclipse作为IDE。当我右键单击该项目,然后单击maven update时,我的Java版本更改为1.5。这是我到目前为止所做的,我遵循了此处列出的所有步骤 http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0-requires- java-1-6-or-newer-in-maven-projects/

  • 我将“Java构建路径”更改为“Workspace default jre 1.8.0_25” 然后将“Java编译器”更改为1.8 然后更改了“项目方面”>Java>1.8 将pom.xml java版本更改为1.8 经过这一切之后,当我点击“Maven Update”时,我的java版本会自动变为1.5。同样在上述步骤中,前两步的版本也自动变为1.5。我该怎么解决这个?

  • 问题内容: 最近,我用maven编写了一个项目,但是我对maven pom.xml中的版本有疑问。 如果我写这样的依赖 版本是什么 在一个简单的项目中,没有子项目 作为另一个项目的依赖项,并且该项目使用foo-bar-1.0.0 问题答案: 问题的第1部分:如果不指定版本,则会有各种不同的结果: a)你会得到一个错误… (D:\src\myproject\pom.xml) has 1 error

  • 问题内容: 我是Maven和IntelliJ IDEA的新手。 我有一个用Java 8编写的Maven项目。每当尝试构建它时(Maven项目窗口->生命周期->编译->运行Maven Build),都会遇到一系列编译错误: 我应该在哪里更改-source参数的值?我尝试在设置->编译器-> Java编译器中将它作为附加参数添加,但是得到了相同的结果。 项目和模块的语言级别都设置为8.0。 我正在使