我的项目pom.xml
具有以下<build>
声明:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
当我在这个项目上运行mvn install
时,它会编译项目,运行单元测试并将其发布到我的本地仓库。我想在这里学习更多关于Maven的信息,并且很难找到以下文档/解释:
mvn install
下声明,我怎么能运行build/plugins
? maven-compiler-plugin
是否包含maven-install-plugin
,如果是,我怎么能想出来?build/plugins/plugin/configuration/source
和.../target
的值都设置为1.8
。如果我的机器上有Java 8,并且我在这个项目上运行mvn install
没有任何错误,那么保证项目使用Java 8构建吗?我正在查看docs for the Compiler Plugin,并且看不到任何地方列出的source
/ target
个配置。答案 0 :(得分:4)
首先,您应该了解构建生命周期是什么以及它是如何工作的以及插件如何are bound to the life cycle by default。
此外,您应该了解在Maven中,每个项目都继承自super pom文件,该文件是maven分发(您下载的软件包)的一部分。 super pom定义了默认的文件夹布局和一些插件版本。
像你一样定义maven-compiler-plugin的问题是非常准确,只是错误。您应该像下面这样定义它:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
这将覆盖超级pom继承的定义并更改其配置。在你的情况下,我建议将定义改为:
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
..
</project>
应该全局设置编码,因为有其他插件使用此定义,如maven-resources-plugin
。上述属性的使用简化了这一点,因为每个具有编码选项的插件都将使用default as defined in the property。
为确保使用正确版本的Java(您计算机上的JDK),您必须使用maven-enforcer-plugin。
除此之外,请查看plugins page which shows the most up-to-date releases of the plugins。
作为一份好的文档,我可以推荐Books on Maven,但要注意它们是用Maven 2编写的。因此,如果有什么不明确的问题,请在此处询问用户邮件列表。