从Pom更新清单版本

时间:2015-07-09 06:31:21

标签: tycho

发布后(我知道Tycho不支持,但我们让它以某种方式工作)我想自动从 pom.xml <更改 Manifest.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.MF pom.xml 已经具有相同版本时才有效,这在我的情况下是无用的。是否有一些模糊的参数我缺少或者我是否真的必须开发自己的插件以用于增加版本的异乎寻常的用例?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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