属性标签中的 maven 编译器和 pom.xml 中插件标签中的 maven 编译器之间的区别



我试图在我的pom中将我的项目源代码和目标设置为Java 1.8.xml并发现它可以两种方式完成:

  1. 在属性标记中设置:

    <maven.compiler.target>1.8</maven.compiler.target>
    <maven.compiler.source>1.8</maven.compiler.source>
    
  2. 在插件中配置:

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

如果有一个选择,我更喜欢选项 #1,因为它更短,但两者之间的真正区别是什么?

它是等效的。事实上,maven-compiler-plugin 的标签使用属性和使用属性属性:https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

所以如果你只想设置这两个属性,你可以愉快地使用属性,但插件更灵活,因为它有很多其他配置可以设置(在野外我见过:fork,annotationProcessor,compilerArgs和其他标签(

最新更新