0

我想使用 Maven 发布插件来发布我的 Eclipse 插件,但是在 release:prepare 步骤中,我不得不跳过更新某些插件的版本号。这是因为它们是其他 3rd 方插件所依赖的插件的修改版本。

我尝试过的是明确地查看现有版本的版本:

mvn release:prepare -DreleaseVersion=1.1.99 -Dproject.rel.org.eclipse.linuxtools.docker.core:org.eclipse.linuxtools.docker.core=4.1.0 -Dproject.dev.org.eclipse.linuxtools.docker.core:org.eclipse.linuxtools.docker.core=4.1.0-SNAPSHOT

这对我不起作用,发布插件仍然试图更改版本。

接下来我尝试将插件分离到配置文件中,并且只调用 release:prepare 为我想要更改的那些:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion>

    <artifactId>com.conti.daisy.bundles</artifactId>

    <packaging>pom</packaging>

    <parent>
        <groupId>com.conti.daisy</groupId>
        <artifactId>com.conti.daisy.build.parent</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>./com.conti.daisy.build.parent</relativePath>
    </parent>

 <profiles>
    <profile>
        <id>daisy</id>
        <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
     <modules>
     ...
     </modules>
    </profile>
    <profile>
        <id>linuxtools</id>
        <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
     <modules>
    <module>org.eclipse.linuxtools.docker.core</module>
 </modules>
</profile>

命令

mvn install -P !daisy     # make sure I have the linuxtools plugins in the local repo
mvn release:prepare -P !linuxtools -DreleaseVersion=1.1.99

这样做的缺点是在跳过的插件中没有更新对父 pom 的引用,这再次使我的构建中断。

如何妥善处理?

4

1 回答 1

0

我最后做了什么,什么有效:

在我运行之前mvn release:prepare,我会运行mvn install以确保所有插件都在本地存储库中。

然后我linuxtools通过在 期间停用 linuxtools 配置文件来排除该模块release:prepare,但我将以下目标添加到preparationGoalsand completionGoals

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
        <execution>
            <id>update-parent-version</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>none</phase>
            <configuration>
                <executable>mvn</executable>
                <workingDirectory>${rootlocation}</workingDirectory>
                <arguments>
                    <argument>versions:update-child-modules</argument>
                    <argument>-N</argument>
                </arguments>
            </configuration>
        </execution>
        <execution>
            <id>install</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>none</phase>
            <configuration>
                <executable>mvn</executable>
                <arguments>
                    <argument>install</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

这可以确保 linuxtools 父 pom 更新到新版本,并将新版本安装到本地 repo。

于 2019-10-24T09:45:58.290 回答