我们通过本地Nexus存储库使用Maven。不幸的是,在查询新版本时,我们得到了一些误报:
commons-collections:commons-collections ............ 3.2.1 -> 20040616
org.hibernate:hibernate-entitymanager ..... 4.1.9.Final -> 4.3.0.Beta1
第一个是古老的版本,但命名方案不正确。第二个实际上只是一个测试版(我们通常不会得到这些,但有些似乎没有通过)。现在的问题是:如何排除这些版本,这些版本不是真正存储在我们的存储库中,而是来自我们Nexus引用的其中一个存储库?
我已经尝试了路由,但要么我弄错了,要么它不能阻止特定的版本,只有完整的工件及其所有版本。我在文档中看过采购,但看起来很复杂,我不敢尝试。
答案 0 :(得分:4)
您可以在项目的POM(或某个公司的父母)中配置versions-maven-plugin
以使用规则文件告诉插件要忽略哪些版本。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- some location that makes sense for your company/project -->
<rulesUri>http://host.company.com/maven-config/maven-version2-rules.xml</rulesUri>
</configuration>
</plugin>
示例规则文件如下所示。我忽略了“99.0-does-not-exist”版本的commons-logging插件。
<ruleset xmlns="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mojo.codehaus.org/versions-maven-plugin/rule/2.0.0
http://mojo.codehaus.org/versions-maven-plugin/xsd/rule-2.0.0.xsd">
<rules>
<rule groupId="commons-logging" artifactId="commons-logging">
<ignoreVersions>
<ignoreVersion>99.0-does-not-exist</ignoreVersion>
</ignoreVersions>
</rule>
</rules>
</ruleset>
您可以添加配置以全局忽略其他版本,而不是像我在此处所做的每个工件,也可以使用正则表达式。有关详细信息,请参阅plugin documentation。