相关疑难解决方法(0)

在maven中指定java版本 - 属性和编译器插件之间的差异

我对maven不太熟悉,在尝试使用多模块项目时,我开始想知道如何为父maven pom中的所有子模块指定java版本.直到今天我才使用:

<properties>
    <java.version>1.8</java.version>
</properties>
Run Code Online (Sandbox Code Playgroud)

但是在研究时我发现你也可以在maven编译器插件中指定java版本,就像那样:

<plugins>
    <plugin>    
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

然后将其包装到插件管理标签中以启用子poms的使用.所以第一个问题是在属性和maven编译器插件中设置java版本有什么区别?

我找不到明确的答案,但在研究过程中我发现你也可以用这种方式指定java版本:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
Run Code Online (Sandbox Code Playgroud)

这表明编译器插件就在那里,即使我没有明确声明它.运行mvn包输出

maven-compiler-plugin:3.1:compile (default-compile) @ testproj ---
Run Code Online (Sandbox Code Playgroud)

和其他一些我没有声明的插件.那些插件默认是隐藏的maven pom的一部分吗?在属性和maven插件配置元素中设置源/目标是否有任何差异?

还有一些其他问题 - 应该采用哪种方式(以及何时不相等)?哪一个最适合多模块项目,如果在pom中指定的java版本与JAVA_HOME中指向的版本不同,会发生什么?

java maven-3 maven maven-compiler-plugin

150
推荐指数
1
解决办法
11万
查看次数

标签 统计

java ×1

maven ×1

maven-3 ×1

maven-compiler-plugin ×1