3

我是 Maven 新手,已经学习 Maven 一个星期了,有 5 年使用 Ant 的经验,所以我可以毫无困难地跟上进度。我已经阅读了 maven.apache.org 上的所有文档两次——阅读了数百页。我已经使用几种不同的 Maven 原型创建了几个测试应用程序,以便在阅读文档时更好地理解。现在,我正在设置我的新项目,并且更精细的点正在发挥作用......

我想我知道为什么 maven-compiler-plugin 在我运行时不会升级到最新版本 2.3.2

mvn versions:use-latest-release

但我需要知道是否有解决方法,或者我是否应该担心。首先,这是我的 pom.xml 的一个片段:

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>

如您所见,我指定的是 2.3.2 版本。考虑到 Maven 可能存在问题,不知道它需要更新存储库中的文件,我运行 mvn versions:use-latest-releases 我注意到 jar 文件已下载到 ~/.m2/repository/org/apache/ maven/plugins/maven-compiler-plugin/ 即

ll ~/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/2.3.2
total 60
-rw-rw-r--. 1 pgarner pgarner 29176 Oct  7 21:29 maven-compiler-plugin-2.3.2.jar
-rw-rw-r--. 1 pgarner pgarner   335 Oct  7 21:29 maven-compiler-plugin-2.3.2.jar.lastUpdated
-rw-rw-r--. 1 pgarner pgarner    40 Oct  7 21:29 maven-compiler-plugin-2.3.2.jar.sha1
-rw-rw-r--. 1 pgarner pgarner  7329 Oct  7 21:29 maven-compiler-plugin-2.3.2.pom
-rw-rw-r--. 1 pgarner pgarner   335 Oct  7 21:29 maven-compiler-plugin-2.3.2.pom.lastUpdated
-rw-rw-r--. 1 pgarner pgarner    40 Oct  7 21:29 maven-compiler-plugin-2.3.2.pom.sha1
-rw-rw-r--. 1 pgarner pgarner   208 Oct  7 21:29 _maven.repositories

但是当我运行以下命令时,很明显 maven-compiler-plugin 版本仍然是 2.0.2.SP1:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin
/usr/java/jdk1.7.0
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building RichFaces 4 Application 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-help-plugin:2.1.1:describe (default-cli) @ Patrac ---
[INFO] org.apache.maven.plugins:maven-compiler-plugin:2.0.2.SP1
Name: Maven Compiler Plugin
Description: Maven Plugins
Group Id: org.apache.maven.plugins
Artifact Id: maven-compiler-plugin
Version: 2.0.2.SP1
Goal Prefix: compiler

注意到我确实使用了 richfaces-archetype-simpleapp 原型来生成这个项目,并且我需要将 JBoss 存储库添加到项目中,我的下一个想法是 RichFaces 中可能有一些东西阻止了项目使用最新的编译器,我看了一下

~/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/maven-metadata-jboss-public-repository-group.xml

果然在那里,我想,我发现了问题:

<latest>2.4-SNAPSHOT</latest>
<release>2.0.2.SP1</release>
<versions>
  <version>0.1-stub-SNAPSHOT</version>
  <version>2.0.2.SP1</version>
  <version>2.3.2-SNAPSHOT</version>
  <version>2.4-SNAPSHOT</version>
</versions>

那么,这是否意味着 RichFaces 不能与 maven-compiler-plugin 版本 2.3.2 一起使用?

我想使用最新版本的 maven-compiler-plugin 开始这个新项目。我想远离使用快照并坚持发布。我的直觉告诉我,将 2.3.2 版本的条目添加到上述 XML 文件(即 2.3.2)是完全危险的。我对么?或者这仅仅是 JBoss-Maven 存储库没有完整的 maven-compiler-plugin 所有版本的问题?

我有哪些选择?我应该对使用 v. 2.0.2.SP1 感到满意吗?或者有没有办法让 Maven 忽略 maven-metadata-jboss-public-repository-group.xml,或者让 Maven 优先考虑 Maven 中央存储库而不是 JBoss 存储库?

4

1 回答 1

1

你在这里有很多,所以我会试着把它拆开,尽可能多地回答......

我想我知道为什么 maven-compiler-plugin 在我运行时不会升级到最新版本 2.3.2

根据您下面的代码段,它看起来工作正常。我刚刚检查了编译插件页面,2.3.2 实际上是最新版本。

当你运行这个:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin /usr/java/jdk1.7.0我猜这是一个默认值。如果您mvn compile在所述项目中运行,它应该使用您指定的 2.3.2。

我的直觉告诉我,将 2.3.2 版本的条目添加到上述 XML 文件(即 2.3.2)是完全危险的。我对么?

除非您正在寻找麻烦或真正知道自己在做什么,否则请不要理会元数据文件:)

我有哪些选择?我应该对使用 v. 2.0.2.SP1 感到满意吗?或者有没有办法让 Maven 忽略 maven-metadata-jboss-public-repository-group.xml,或者让 Maven 优先考虑 Maven 中央存储库而不是 JBoss 存储库?

我认为没有使用 2.0.2.SP1 的插件。即使它是\is,使用插件的快照也不是什么大不了的IMO。使用依赖关系的快照绝对需要谨慎。

我确信有一些方法可以覆盖哪个存储库以什么顺序解析什么,但我不知道在这种情况下它会对您有多大帮助。

我希望这有帮助。

于 2012-01-30T18:07:09.270 回答