我希望在 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构建的限定符?
答案 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值,那将会更加流畅。