【问题标题】:Update Manifest Version From Pom从 Pom 更新清单版本
【发布时间】:2015-07-09 06:31:20
【问题描述】:

发布后(我知道 Tycho 不支持,但我们以某种方式使其工作)我想从 pom.xmlManifest.MF 的版本/em> - 将来甚至在相同的构建过程中。

在研究如何实现自定义 Maven 插件时,我发现了 tycho-versions-plugin,它几乎可以满足我的需求,因此我将其添加到构建中:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-versions-plugin</artifactId>
    <version>${tycho-version}</version>
    <executions>
        <execution>
            <id>versions</id>
            <phase>validate</phase>
            <goals>
                <goal>set-version</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
            <newVersion>${project.version}</newVersion>
    </configuration>
</plugin>

现在这仅在 Manifest.MFpom.xml 已经具有相同版本的情况下才有效,这在我的情况下是无用的。是否缺少一些模糊的参数,或者我真的必须为增加版本的奇异用例开发自己的插件?

【问题讨论】:

  • 为什么Manifest.MF和pom.xml开头不一样?第 1 步)Manifest.MF 和 pom.xml 具有相同的版本 第 2 步)您运行您的构建。也许在settings.xml 中设置${new.project.version} 并使用它而不是${project.version} 步骤3)Manifest.MF 和pom.xml 具有相同的更新版本这是一个简化的解决方案,但我不确定我是否理解你的正是问题。
  • @gillesB 因为在(Maven)发布后,pom.xml 的版本会增加,但 Manifest.MF 的版本不会增加.直到知道,我们需要检查有问题的项目并手动增加版本(或使用一些工具,但它是相同的)。
  • 您可以使版本恢复与版本插件的update-pom 目标同步。然后你可以拨打set-version
  • @oberlies 这是两个手动步骤,我必须记住使用正确的版本,所以手动更新并没有真正的改进。
  • @oberlies 这也是不正确的。它将在 maven-release-plugin 增加 POM 之前将 POM 更新回旧版本。这不是这里需要的。

标签: tycho


【解决方案1】:

感谢这篇文章,非常有用! tycho有一种发布方式,只需要禁用版本检查。

        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-packaging-plugin</artifactId>
            <version>${tycho.version}</version>

            <configuration>
                <strictVersions>false</strictVersions>
            </configuration>

        </plugin>

感谢@Steffi S。我创建了一个新的 Mojo 来做这样的事情: 可以在 https://github.com/eclipse/tycho/pull/7 或者 https://github.com/perelengo/tycho

【讨论】:

    【解决方案2】:

    如果有人想修复他们自己的tycho-versions-plugin,这就是我为使其工作所做的工作。在VersionsEngine 中,我通过以下方法删除了if

    public void addVersionChange(String artifactId, String newVersion) throws IOException {
        MutablePomFile pom = getMutablePom(artifactId);
    
        // if (!newVersion.equals(pom.getVersion())) {
            addVersionChange(new VersionChange(pom, newVersion));
        // }
    }
    

    我不完全确定这是否有必要甚至是否明智,但我在BundleManifestManipulator 中更改了以下方法:

    private boolean isProjectVersionChange(ProjectMetadata project, VersionChange change) {
        MutableBundleManifest mf = getBundleManifest(project);
        return change.getArtifactId().equals(mf.getSymbolicName());
    }
    

    【讨论】:

    • 也许您想问问 Tycho 开发人员您的更改是否明智。也许他们会将它们添加到下一个版本中。
    • @gillesB Tycho 官方开发人员已经评论说:没有必要从 pom.xml 更新 Manifest。这并不奇怪,因为 Tycho 不支持发布,而且如果您从不增加任何版本,它们之间就不会有所不同。我们只是处于我们真正想要不时发布的稀有和异国情调的位置。我只是为那些做这种蠢事的公司添加代码。
    • 呃,这个问题已经有 2 年多了,我现在自己也遇到了这个问题。 Tycho 似乎不是一个非常积极维护的项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2013-10-02
    • 2012-05-31
    • 2015-09-24
    • 2015-04-01
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多