使用 Maven 将版本文件放入 EAR 或 WAR

Putting version file into EAR or WAR using Maven

我的公司正在尝试找到一种方法来使用 Maven 在 EAR 和/或 WAR 上放置某种类型的版本文件或版本控制。

我们做 Maven Build 时需要的是从文件中取出版本号并以某种方式将其放入 EAR 或 WAR 或者有更好的方法..

我想听听其他人是如何做到这一点的。

我们正在使用 Maven、Git、Bamboo 等。因此,如果 Git 可以将版本或提交编号放入 Maven 可以使用的文件中,那就太好了

您至少有以下选项:

自定义清单条目。

war 插件允许您将一些信息添加到清单文件中。使用页面上有一些示例:https://maven.apache.org/plugins/maven-war-plugin/examples/war-manifest-guide.html(注意:今天是 ${project.version} 而不是 ${pom.version}。 ear 插件有指定清单文件或设置一些环境设置的选项:https://maven.apache.org/plugins/maven-ear-plugin/examples/specifying-env-entries-for-the-generated-application-xml.html

将值添加到 属性 文件并使用过滤器替换占位符。

在 src/main/resources 中创建一个简单的文本或 属性 文件,类似于 application.properties:

app.version=${project.version} app.description=${project.description}

然后为该文件启用资源过滤:http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html。 您还可以访问环境变量:${env.variable_name} 并使用来自 bamboo 的构建号(作为参数传递给构建)。

http://www.mojohaus.org/buildnumber-maven-plugin/ 这样的插件还允许您添加 SVN 修订号或 Git Sha1 Commit Hash。

如果您使用的是发布插件,maven 会自行将一些信息添加到发布的 jar 的 maven 文件夹中或 war(在 meta-inf 文件夹中)。