我正在使用mvn versions:display-dependency-updates versions:display-plugin-updates
目标来检查依赖项或插件更新。
我的maven项目是一个多模块项目,如下所示:
moduleA
|- moduleB1
| |- moduleC
|- moduleB2
|- build-config/rules.xml
由于有一些不需要的更新,比如我不想要的测试版,我已经制作了一个过滤器(可行)。我这样用它:
<profile>
<id>maven-version-plugin-1</id>
<activation>
<property>
<name>version.rules.uri</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<configuration>
<rulesUri>${version.rules.uri}</rulesUri>
</configuration>
</plugin>
</plugins>
</build>
</profile>
我被迫使用个人资料和属性version.rules.uri
,因为它必须引用现有文件(默认情况下它指向./build-config/rules.xml
,但它也在我的settings.xml
中绝对路径。)
我想通过以下方式避免这种情况:
build-config
项目m2:myGroupId:myArtifactId:version:scope:jar/rules.xml
现在的问题是:是否有Maven Wagon插件(由maven版本插件使用)的实现,允许读取诸如jar的存储库条目?
答案 0 :(得分:3)
这对我有用:
<rulesUri>file:///${session.executionRootDirectory}/maven-version-rules.xml</rulesUri>
有关变量$ {session.executionRootDirectory}的含义,请参阅 Finding the root directory of a multi module maven reactor project
答案 1 :(得分:1)
基于the documentation for the plugin,这是可能的:
如果要将规则集xml分发为Maven工件,则也可以在jar中提供规则集xml文件。因此,必须将包含的jar声明为versions-maven-plugin的直接依赖项,并使用classpath作为协议。
我只是尝试了一下,然后开始工作。
为新的版本规则工件创建一个新文件夹,如下所示:
version-rules
|- files
\- version-rules.xml
\- pom.xml
pom.xml非常简单:
...
<artifactId>my-version-rules</artifactId>
<packaging>jar</packaging>
<build>
<defaultGoal>package</defaultGoal>
<resources>
<resource>
<directory>files</directory>
<filtering>false</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
</plugins>
</build>
...
运行mvn install
来安装此工件。
然后,在另一个pom中,按如下方式配置版本插件:
...
<build>
...
<pluginManagement>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.7</version>
<configuration>
<rulesUri>classpath:///version-rules.xml</rulesUri>
</configuration>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>my-version-rules</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
...
</pluginManagement>
...
</build>
...