3
在Maven中指定Java版本-属性和编译器插件之间的区别
我对maven的经验不是很丰富,在尝试多模块项目时,我开始想知道如何为父maven pom中的所有子模块指定java版本。直到今天,我只使用: <properties> <java.version>1.8</java.version> </properties> 但是在研究时,我发现您还可以在maven编译器插件中指定Java版本,如下所示: <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> 然后将其包装到插件管理标签中,以启用子poms用法。因此,第一个问题是beetwen在属性和maven编译器插件中设置java版本有何区别? 我找不到明确的答案,但是在研究过程中,我发现您还可以通过以下方式指定Java版本: <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> 这表明即使我没有明确声明它也存在编译器插件。使用以下命令运行mvn软件包输出 maven-compiler-plugin:3.1:compile (default-compile) @ testproj --- 以及其他一些我未声明的插件。那么这些插件是Maven Pom的默认隐藏部分吗?beetwen在属性和maven插件配置元素中设置源/目标是否有任何区别? 还有一些其他问题-应该使用哪种方式(以及何时不相等)?哪一种最适合多模块项目,并且如果pom中指定的Java版本与JAVA_HOME中指向的版本不同,会发生什么?