Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven编译器插件_Maven_Maven 2_Maven 3 - Fatal编程技术网

Maven编译器插件

Maven编译器插件,maven,maven-2,maven-3,Maven,Maven 2,Maven 3,我知道Maven编译器插件默认绑定到: 编写 测试编译 生命周期,通常不指定附加配置,我们不必 在我们的POM中明确地定义它,但我仍然看到有经验的开发人员 这在他们的POM中,例如 <build> <plugins> <plugin> <artifactId>maven-shade-plugin</artifactId> </plugin> &l

我知道Maven编译器插件默认绑定到:

编写 测试编译 生命周期,通常不指定附加配置,我们不必 在我们的POM中明确地定义它,但我仍然看到有经验的开发人员 这在他们的POM中,例如

<build>
    <plugins>
        <plugin>
            <artifactId>maven-shade-plugin</artifactId>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
    </plugins>
</build>

我想知道这有什么意义?他为什么要这么做?

对于shade插件,他可能正在使用POM继承。在父POM层次结构中查找pluginManagement部分,可能有一个shade插件配置,他正在将其引入该模块


对于编译器插件,我不知道。您是对的,对于jar/war/ear/ejb项目,Maven将自动拉入编译器配置,即使他在父POM的pluginManagement部分中定义了特定的配置。

如果他们将这些东西放在POM中,他们不理解Maven。您应该定义在构建中使用的插件的版本。这是通过以下方式实现的:

org.apache.maven.plugins 在那里你可以看到特定的插件版本被定义。这意味着如果你升级你的Maven版本,你开始使用不同的插件版本,这实际上与构建的可复制性没有最好的关系。因此,最佳实践是定义所有使用的插件。根据定义,如果您已经定义了打包类型,则不需要在构建标记区域中提及任何内容,这是一种约定优于配置的范例提示