我正在使用Maven 3.0.5和OpenJDK 7在Ubuntu上设置Jenkins服务器.Maven坚持使用Java 1.3进行编译,如各种其他问题所述。我花了几个小时研究了几十页关于这种奇怪的行为,它总是回到一件事:为每个POM中的一大块xml指定编译插件的特定Java目标:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgument></compilerArgument>
</configuration>
</plugin>
</plugins>
</pluginManagement>
似乎与Maven&#34;约定优于配置&#34;直接矛盾。口头禅要明确告诉你,你要为每个项目使用现代Java。当然,约定不是期望Java 1.3代码,而是手动保持每个pom.xml与安装的JDK同步。是不是有办法配置 Maven 而不是配置每个项目?
答案 0 :(得分:1)
如果所有poms都继承自一个非常常见的父,那么您只能在父级中指定一次。
我不相信你所要求的是可配置的,也不应该。它会打破你的构建的可移植性,这是Maven的重点。如果您按照自己的方式进行操作,则还需要将全局maven配置置于源代码管理之下,否则无法单独查看存储库并知道应该在哪个版本下编译。
IOW另一个重要的设计原则是&#34;所有的构建配置都在pom中。&#34;您正在提出另一层配置,这是一个跨越项目的全局设置,否则这些项目彼此之间并不相关。