从 Pom 更新清单版本

Update Manifest Version From Pom

发布后(我知道 Tycho 不支持,但我们以某种方式让它工作)我想从 Manifest.MF 自动更改版本pom.xml - 将来甚至在同一个构建过程中。

在研究如何实现自定义 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 已经有相同的版本才有效,这对我来说没用。是否缺少一些晦涩的参数,或者我真的必须为增加版本的奇异用例开发自己的插件吗?

如果有人想修复他们自己的 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());
}

感谢 post,非常有用! 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