Maven版本插件:从Maven依赖项引用rule.xml吗?

NoD*_*und 6 java maven maven-wagon-plugin versions-maven-plugin

我正在使用mvn versions:display-dependency-updates versions:display-plugin-updates目标来检查依赖项或插件更新。

我的maven项目是一个多模块项目,如下所示:

moduleA
 |- moduleB1
 |    |- moduleC  
 |- moduleB2
 |- build-config/rules.xml
Run Code Online (Sandbox Code Playgroud)

由于有一些不需要的更新,例如我不想要的beta,所以我做了一个过滤器(有效)。我这样使用它:

<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>
Run Code Online (Sandbox Code Playgroud)

我被迫使用配置文件和属性,version.rules.uri因为它必须引用现有文件(默认情况下,它指向./build-config/rules.xml,但也位于我settings.xml的绝对路径中)。

我想通过以下方式避免这种情况:

  • 发布一个独立的build-config项目
  • 使用一些uri引用该项目: m2:myGroupId:myArtifactId:version:scope:jar/rules.xml

现在的问题是:是否有Maven Wagon插件(由Maven版本插件使用)的实现,该实现允许读取诸如jar之类的存储库条目?

Sut*_*tra 11

这对我有用:

<rulesUri>file:///${session.executionRootDirectory}/maven-version-rules.xml</rulesUri>
Run Code Online (Sandbox Code Playgroud)

该变量的含义${session.executionRootDirectory}参见 查找多模块maven reactor项目的根目录


Buu*_*man 4

根据插件的文档,这是可能的:

如果您想将规则集 xml 作为 Maven 工件分发,您也可以在 jar 中提供规则集 xml 文件。因此,您必须将包含的 jar 声明为 versions-maven-plugin 的直接依赖项,并使用类路径作为协议。

我刚刚尝试了一下并让它发挥作用。

为新的版本规则工件创建一个新文件夹,如下所示:

version-rules
  |- files
       \- version-rules.xml
  \- pom.xml
Run Code Online (Sandbox Code Playgroud)

pom.xml 非常基本:

version-rules
  |- files
       \- version-rules.xml
  \- pom.xml
Run Code Online (Sandbox Code Playgroud)

运行 amvn install来安装此工件。

然后,在另一个 pom 中,配置版本插件,如下所示:

    ...
    <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>
    ...

Run Code Online (Sandbox Code Playgroud)