【问题标题】:Is there any way to get maven project version from pom.xml in classpath dependency jar有什么方法可以从类路径依赖 jar 中的 pom.xml 获取 maven 项目版本
【发布时间】:2021-12-25 07:22:41
【问题描述】:

我们有一个health Utility jar,它作为maven依赖添加到另一个项目A中。我们想从health Utility jar中获取项目A的maven版本。有人可以建议如何获得它吗?

【问题讨论】:

  • 为了什么目的?
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 我们创建了一个 maven 项目(Health Utility),它将作为 maven 依赖添加到其他 maven 项目 ex 项目 A 要求是从 Health Utility 中的 Health Utility 中获取 maven 项目 A 的版本,我们正在公开一个 api 以获取项目 A 或使用健康实用程序 jar 的组件的版本详细信息和健康状态

标签: java spring-boot maven pom.xml


【解决方案1】:

查看 org.springframework.boot.SpringBootVersion,这是检索类/包版本信息的一种方法。

【讨论】:

    【解决方案2】:

    这种情况最简单(对于少数属性):

    “过滤”属性到(弹簧使用的)属性文件中。

    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 配置为过滤来自src/main/resources/ 的所有.yaml.yml.properties 文件(请参阅hereherehere)。

    然后在 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
    }
    

    但当然有许多不同的解决方案/方法,例如:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2019-04-16
      • 1970-01-01
      • 2021-08-28
      • 2015-03-22
      • 1970-01-01
      • 2016-10-16
      相关资源
      最近更新 更多