Jee*_*Kim 29 java compiler-construction maven
现在,我正在编写一个小型java应用程序,只有几个maven pom.xml文件.我想用jdk 1.6编译所有我的maven包,如果没有在每个POM上手动设置它,我找不到一个好方法 - 我厌倦了复制和粘贴
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在我生成的每个pom.xml文件中.
有没有更简单的方法来解决这个问题?
lee*_*777 16
创建一个pom-only(<packaging>pom</packaging>)项目,该项目具有所需的编译器设置(以及任何其他默认设置).您可以像对待任何其他项目一样对待它(释放它;将它部署到您的Maven仓库等).
parent在pom文件的顶部放置一个声明:
<parent>
<groupId><!-- parent's group id --></groupId>
<artifactId><!-- parent's artifact id --></artifactId>
<version><!-- parent's version --></version>
</parent>
Run Code Online (Sandbox Code Playgroud)
如果你想要设置的只是编译器设置,它没有多大帮助.但是,如果您发现自己在项目中以相同的方式配置了大量插件,报告和依赖项,则可以创建一个父项来统治它们.
顺便说一句 - 小心声明dependencies并plugins在你的父pom文件中.通常你会喜欢dependencyManagement和pluginManagement.请参见该 文档了解更多详情.
您可以在您的指定中指定此插件和配置,~/.m2/settings.xml然后将其应用于所有项目.
但是,这有使您的项目不再可移植的缺点 - 尝试使用相同的pom.xml构建相同的代码将在settings.xml与您没有相同值的其他计算机上失败.
我厌倦了复制和粘贴
是的,您应该使用POM 继承来避免这种情况并maven-compiler-plugin在父POM中配置它.
另一种选择是使用@matt建议的解决方案(并且他确定了使用的利弊settings.xml).
在这两种情况下,这是典型的,我喜欢使用来检查设置maven-enforcer-plugin和它的requireJavaVersion规则,你会配置是这样的:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.6</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
Run Code Online (Sandbox Code Playgroud)
但它可以做得更多(比如检查maven版本).很有用.
| 归档时间: |
|
| 查看次数: |
30393 次 |
| 最近记录: |