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>
在我生成的每个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>
如果你想要设置的只是编译器设置,它没有多大帮助.但是,如果您发现自己在项目中以相同的方式配置了大量插件,报告和依赖项,则可以创建一个父项来统治它们.
顺便说一句 - 小心声明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>
但它可以做得更多(比如检查maven版本).很有用.
| 归档时间: | 
 | 
| 查看次数: | 30393 次 | 
| 最近记录: |