删除Tycho Builds的限定符

时间:2015-09-17 09:11:08

标签: tycho

我希望在 Manifest.MF 版本的末尾没有时间标记的一些Tycho版本(我试图不使用像“release”和“standard”这样的词,否则人们就会陷入这样一个事实,即我正在尝试一些Tycho不打算做的事情。)

我想我必须像这样配置tycho-packaging-plugin

<profiles>
    <profile>
        <id>some-special-occurrence</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-packaging-plugin</artifactId>
                    <configuration>
                        <format></format><!-- can't figure out what to enter -->
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

也许我可以重新调整tycho-versions-plugin的用途,但我找不到任何关于如何阻止它在版本末尾设置“.qualifier”的info

有没有人知道如何删除某些Tycho构建的限定符?

2 个答案:

答案 0 :(得分:1)

如本文http://www.lorenzobettini.it/2020/02/remove-snapshot-and-qualifier-in-maven-tycho-builds/所示,您可以结合使用标准Maven插件和tycho-versions-plugin

例如,您可以运行

mvn \
  build-helper:parse-version org.eclipse.tycho:tycho-versions-plugin:set-version \
  -DnewVersion=\${parsedVersion.majorVersion}.\${parsedVersion.minorVersion}.\${parsedVersion.incrementalVersion}

或者

mvn \
  versions:set -DgenerateBackupPoms=false -DremoveSnapshot=true \
  org.eclipse.tycho:tycho-versions-plugin:update-eclipse-metadata

第一个方法将首先解析当前版本并设置一些属性;使用这些属性,您可以创建与当前版本相对应的版本,跳过-SNAPSHOT,然后将其传递给tycho-versions-plugin

第二种方法将首先从POM中删除-SNAPSHOT,然后使用tycho-versions-plugin更新Eclipse项目版本(删除.qualifier)。

更多细节可以在上述文章中找到。

答案 1 :(得分:0)

目前尚不清楚你在问什么。

如果您的MANIFEST.MF的版本号没有限定符,例如

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Bundle
Bundle-SymbolicName: example-bundle;singleton:=true
Bundle-Version: 0.1.0

然后你不必做任何事情。也就是说,Tycho将使用给定的bundle-version 0.1.0产生工件,没有限定符。你不必乱用tycho-packaging-plugin。

你是说你想在你的MANIFEST.MF中使用带有限定符的Bundle-Version,比如0.1.0.qualifier,但你不希望你的构建在构建过程中去除限定符吗?如果这就是你想要的,我认为你将不得不提交功能请求。

理想情况下,您只需提供

即可
<forceContextQualfier></forceContextQualifier> 

或者

<forceContextQualfier>none</forceContextQualifier> 

表示您不需要限定符。也就是说,您希望在PDE中产生与qualifier=none相同效果的内容:http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.pde.doc.user%2Ftasks%2Fpde_version_qualifiers.htm

但是看https://git.eclipse.org/c/tycho/org.eclipse.tycho.git/tree/tycho-packaging-plugin/src/main/java/org/eclipse/tycho/buildversion/BuildQualifierMojo.java,看起来forceContextQualifier被视为文字字符串。 none值没有特殊处理,空字符串总是替换为时间戳。

格式值必须是有效的SimpleDateFormat。同样,空值将替换为默认值,因此无法请求空格式或空格式。

您的另一个选择是使用tycho-versions-plugin来设置捆绑包的值并删除限定符。这样,您可以分支发布,设置版本以删除限定符,然后构建。或者也许让构建在运行中进行。

但是,实际上,我认为如果我们可以让tycho-packaging-plugin处理none forceContextQualifier值,那将会更加流畅。