java - 如何在 JAR 文件名中包含内部版本号?

标签 java maven maven-assembly-plugin

我有一个项目,它是使用 Maven 程序集插件构建的。

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

我有一个文件 BUILD.txt,其中包含当前的内部版本号。

当我调用 mvn assembly:single 时,我希望 maven-assemble-plugin 生成一个名为 myproduct-1.0- 的 JAR 文件(包含所有依赖项) SNAPSHOT.BUILD.jar,其中 BUILD 是来自 BUILD.txt 的文本(即,如果 BUILD.txt 包含 172,则结果 JAR 应称为 myproduct-1.0-SNAPSHOT.172.jar)。

如何从 BUILD.txt 读取文本,以便可以在程序集插件的 finalName 设置中使用它?

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <finalName>${project.build.finalName}.${build}.jar</finalName
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

最佳答案

方法 1

  • 使用Maven Properties Plugin
  • 更改您的 BUILD.txt包含buildNumber=NNN
  • 使用属性(property) ${buildNumber}对于 <finalName>

方法2

  • 假设您使用 SVN 或 Git 等 SCM
  • 不需要使用BUILD.txt不再
  • 使用Maven Build Number Plugin
  • 使用属性(property) ${buildNumber}对于 <finalName>

关于java - 如何在 JAR 文件名中包含内部版本号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954231/

相关文章:

java - TreeSet 或 TreeMap - 按照说明

java - 从文件中读取特定单词

Java KeepAlive 检查程序不为 .checkError 返回 true

java - 为什么 MapView 的 getOverlays() 未定义?

java - 通过maven更改java堆大小

java - Maven war 插件无法排除爆炸 war 格式的库

maven-2 - Maven多模块组装

java - 销毁名称为 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' 的 bean 的方法抛出异常

maven - 我如何运行 Guava 的基准测试套件?

maven - 使用 Maven 构建 fat jar