我正在使用Maven构建Eclipse的插件,并且正在寻找一种方法来告诉Maven更新META-INF\MANIFEST.MF文件中的Bundle-Version。
诀窍在于,我需要一种干净的方式来完成它,这样以后的同事(甚至是我在几个月/几年后)就不会破坏最终的自动化构建。
下面是我的尝试:
使用"捆绑版本:${项目.版本} "在清单. MF中
从Maven的Angular 来看,这是可行的,但是我的Eclipse项目经常显示错误:指定的版本格式不正确(major. minor. micro. qualifier)
使用上述文件,但位于maven使用的另一个META-INF文件夹(名为META-INF-MAVEN)中,而不是原始文件夹中:
<resources>
<resource>
<directory>META-INF-MAVEN</directory>
<targetPath>META-INF</targetPath>
<filtering>true</filtering>
</resource>
</resources>
这仍然是"工作",但所需的MANIFEST.MF文件的副本是远离我所寻找的。这是一个很大的陷阱,为未来的错误,如编辑原始的MANIFEST.MF文件和忘记maven的,导致一个错误的发布。
使用org. apache. maven. plugins在编译时从pom文件添加Bundle-Version标记:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>target/classes/META-INF/MANIFEST.MF</manifestFile>
<manifestEntries>
<Bundle-Version>${project.version}</Bundle-Version>
</manifestEntries>
</archive>
</configuration>
</plugin>
这是最有前途的方法,但是它只在原始MANIFEST.MF没有Bundle-Version行时才起作用,结果是Eclipse项目中再次出现错误。
所以,我来了,问你有什么想法。
谢谢。
1条答案
按热度按时间fnvucqvd1#
下面的解决方案在
META-INF/MANIFEST.MF
中找到Bundle-Version:
行,并将其替换为Maven项目版本。replacer maven插件用于此操作,但肯定有其他maven插件可以像find-and-replace-maven-plugin一样完成相同的工作。