【问题标题】:AspectJ Maven Compiler Plugin Failing for Java 8Java 8 的 AspectJ Maven 编译器插件失败
【发布时间】:2016-10-28 19:05:20
【问题描述】:

我编写了一个使用 AspectJ 的 maven 模块,并且正在使用 AspectJ 编译器插件对其进行编译。我编写了一些使用 Java 8 谓词的单元测试,当我运行 mvn clean install 时,测试失败并出现以下错误:

error: lambda expressions are not supported in -source 1.5

奇怪的是,当我包含标准编译器插件和 aspectj 编译器时,它的构建没有问题。我不愿意同时使用这两个插件,因为我认为它们应该是互斥的?

编译器设置如下:

 <build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>aspectj-maven-plugin</artifactId>
            <version>1.8</version>
            <configuration>
                <complianceLevel>1.8</complianceLevel>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>test-compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

【问题讨论】:

  • 添加 1.81.81.8 并使用 aspectj 运行时版本 1.9.2 和插件版本 1.11 工作

标签: maven aspectj


【解决方案1】:

您得到的错误来自 maven 编译器,它必须配置源代码级别:

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

【讨论】:

  • ...那么它是如何工作的?我以为您要么拥有标准的 maven 编译器(如您所描述的),要么拥有 aspectj 编译器?
  • aspectj 在 java 编译器之后运行,它对现有的 .class 文件进行字节码编织
  • ...即使使用编译时编织?
  • 如果您愿意,可以使用 AspectJ 编译器作为标准 Java 编译器的替代品,因为 Ajc 是 Eclipse 编译器的扩展版本,因此可以编译普通 Java类也是如此,而不仅仅是方面。如果您希望这样做,只需停用相关 Maven 模块的 Maven 编译器插件即可。
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 2018-01-02
  • 2017-04-24
  • 2014-10-02
  • 2015-01-07
相关资源
最近更新 更多