AspectJ Maven编译器插件在Java 8中失败

AspectJ Maven编译器插件在Java 8中失败,maven,aspectj,Maven,Aspectj,我已经编写了一个使用AspectJ的maven模块,并且正在使用AspectJ编译器插件进行编译。我编写了一些使用Java 8谓词的单元测试,当我运行mvn clean install时,测试失败,出现以下错误: error: lambda expressions are not supported in -source 1.5 奇怪的是,当我包括标准编译器插件和aspectj编译器时,它的构建没有问题。我不愿意使用这两个插件,因为我认为它们应该相互排斥 编译器的设置如下所示: <bu

我已经编写了一个使用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>

org.codehaus.mojo
aspectj maven插件
1.8
1.8
1.8
1.8
编译
测试编译

您收到的错误来自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>

org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8

您收到的错误来自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>

org.apache.maven.plugins
maven编译器插件
3.5.1
1.8
1.8

…那么它是如何工作的呢?我想您要么使用标准maven编译器(如您所述)或者aspectj编译器?aspectj在java编译器之后运行,它在现有的.class文件上进行字节码编织…甚至使用编译时编织?如果您愿意,您可以使用aspectj编译器作为标准java编译器的替代品,因为Ajc是Eclipse编译器的扩展版本,因此可以编译普通java类,而不仅仅是方面。如果您希望这样做,只需停用有关Maven模块的Maven编译器插件……那么它是如何工作的呢?我想您要么使用标准maven编译器(如您所述)或者aspectj编译器?aspectj在java编译器之后运行,它在现有的.class文件上进行字节码编织…甚至使用编译时编织?如果您愿意,您可以使用aspectj编译器作为标准java编译器的替代品,因为Ajc是Eclipse编译器的扩展版本,因此可以编译普通java类,而不仅仅是方面。如果你想这样做,只需停用相关Maven模块的Maven编译器插件。添加1.8 1.8 1.8并使用aspectj运行时版本1.9.2和插件版本1.11即可添加1.8 1.8 1.8并使用aspectj运行时版本1.9.2和插件版本1.11工作