7

如何锁定我要使用的 Maven 插件的版本?

我的 PMD 插件配置如下:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <outputDirectory>target/pmd</outputDirectory>
                    <targetDirectory>target/</targetDirectory>
                    <aggregate>true</aggregate>
                    <targetJdk>1.6</targetJdk>
                    <rulesets>
                        <ruleset>rulesets/basic.xml</ruleset>
                        <ruleset>rulesets/codesize.xml</ruleset>
                        <ruleset>rulesets/coupling.xml</ruleset>
                        <ruleset>rulesets/design.xml</ruleset>
                        <ruleset>rulesets/imports.xml</ruleset>
                        <ruleset>rulesets/logging-java.xml</ruleset>
                        <ruleset>rulesets/optimizations.xml</ruleset>
                        <ruleset>rulesets/strings.xml</ruleset>
                        <ruleset>rulesets/unusedcode.xml</ruleset>
                    </rulesets>
                </configuration>
            </plugin>

昨晚,我的夜间构建失败,我无法再运行任何 pmd 目标,因为它正在尝试查找该插件的 2.6-SNAPSHOT 版本。如果我有一个显示 2.5 的版本标签,为什么它甚至试图找到 2.6-SNAPSHOT?此外,2.6-SNAPSHOT 不在中心 - 为什么我的 Maven 客户认为它存在?

Maven 版本:2.0.9
Java 版本:1.6.0_17
操作系统名称:“linux” 版本:“2.6.24-24-generic”arch:“i386” 系列:“unix”

编辑:

我升级到 maven 2.2.1 并观察到与以前相同的问题。我能够通过从我的存储库 (.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/maven-metadata-central.xml) 的元数据中删除 2.6-SNAPSHOT 来构建项目。我还将 latestVersion 标签设置为 2.5。这显然不是解决方案,因为我必须部署自己的插件或更改所有客户端上的缓存版本。

4

1 回答 1

3

这种情况下的标准程序:删除本地仓库中相应的插件文件夹:

.m2/repository/org/apache/maven/plugins/maven-pmd-plugin/

这在大多数情况下都有帮助。

如果没有,您可能会从存储库中获取错误数据。如果您使用的是连接,请重建索引。

于 2010-08-25T15:12:42.190 回答