java - 有什么方法可以从类路径依赖 jar 中的 pom.xml 获取 maven 项目版本
问题描述
我们有一个健康实用程序 jar,它作为 maven 依赖项添加到另一个项目 A 中。我们想从健康实用程序 jar 中获取项目 A 的 maven 版本。有人可以建议如何获得它吗?
解决方案
对于这种情况最简单(对于少数属性):
将属性“过滤”到(弹簧使用的)属性文件中。
pom.xml:
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.6</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
...
<version>1.2.3.SNAPSHOT</version>
...
这将 maven 配置为从(请参阅此处、此处和此处)过滤所有.yaml
,.yml
和.properties
文件。src/main/resources/
然后在 src/main/resources/application.properties中,您将:
my.domain.maven.project.version=${project.version}
# a key of your choice, but the value *has to be*
# ${project.version} or @project.version@
在构建(涉及process-ressources
阶段(例如mvn clean process-classes
))上,这将(应该)被“过滤”到${project.buildDir}
(通常是目标/类)/application.properties:
my.domain.maven.project.version=1.2.3.SNAPSHOT
然后可以使用:
@SpringBootApplication // @Configuration/@Component/Bean-like/@...
public class MyApp {
@Value("${my.domain.maven.project.version}")
private String mavenProjectVersion;
// do something with it
}
但当然有许多不同的解决方案/方法,例如:
- 使用
build-info
(spring-maven-plugin) - properties-maven-plugin(“第 3 方”)
- ...
推荐阅读
- python - TKinter 应用程序在 Visual Studio Code 中运行良好,但作为 .exe 崩溃
- spring-boot - Web 服务器性能下降
- python - Pandas:基于公共列连接两个数据框的最佳方法
- android - 如何在“com.wonderkiln.camerakit.CameraView”库中切换相机
- r - 一种在区间内查找函数最大值的简洁方法:管道、序列和子集
- ios - 目标 c - 尝试打开 URL 方案时打开建议
- javascript - 如何在 jQuery 中使用多个组合器设置 css
- javascript - 是否可以在单击按钮时出现一个小的白色弹出窗口?
- javascript - Daterangepicker - 强制只允许输入更改的日期
- sql - Oracle SQL的Where子句中如何写case语句?