java\springboot获取maven版本号

java\springboot获取maven版本号

前言

java获取maven版本号

  1. 新建 java-templates 包

    在这里插入图片描述

  2. 定义为 Generated Sources Root(非必须)

    在这里插入图片描述

  3. 创建对应目录的文件地址并新建java类 VersionEnvironmentPostProcessor(自定义名称

    package com.example.demo.config;
    
    /**
     *
     */
    public class VersionEnvironmentPostProcessor {
    
        /**
         * 获取当前项目版本号
         */
        private static final String projectVersion = "${project.version}";
    }
    
    
    

    目录如图
    在这里插入图片描述

  4. 增加maven插件

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>templating-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <id>filter-src</id>
                        <goals>
                            <goal>filter-sources</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
    
  5. 执行mvn clean install 可以在 target 目录下看到生成的文件版本号已经被替换了

    在这里插入图片描述

将版本号加载到spring环境内

  1. 修改 VersionEnvironmentPostProcessor 类如下

    package com.example.demo.config;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.env.EnvironmentPostProcessor;
    import org.springframework.core.env.ConfigurableEnvironment;
    import org.springframework.core.env.PropertySource;
    import org.springframework.core.env.StandardEnvironment;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     *
     */
    public class VersionEnvironmentPostProcessor implements EnvironmentPostProcessor {
    
        /**
         * 获取当前项目版本号
         */
        private static final String projectVersion = "${project.version}";
    
        @Override
        public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
            Map<String, String> map = new HashMap<>();
            map.put("spring.project.version", projectVersion);
    
            StandardEnvironment standardEnvironment = (StandardEnvironment) environment;
            standardEnvironment.getPropertySources().addLast(new VersionPropertySource(map));
        }
    
        public static class VersionPropertySource extends PropertySource<Map<String, String>> {
    
            VersionPropertySource(Map<String, String> source) {
                super("versionPropertySource", source);
            }
    
            @Override
            public Object getProperty(String key) {
                return getSource().get(key);
            }
        }
    }
    
    

    可将 standardEnvironment.getPropertySources().addLast(new VersionPropertySource(map)); 换成 standardEnvironment.getPropertySources().addFirst(new VersionPropertySource(map));
    addLast 会加入到环境列表最后,这样遇到相同参数名时不会覆盖配置文件的参数值,addFirst 会加到最前面会覆盖其他相同名称的参数值

  2. 增加 spring.factories 文件让springboot启动加载
    在这里插入图片描述

    # Environment Post Processors
    org.springframework.boot.env.EnvironmentPostProcessor=\
    com.example.demo.config.VersionEnvironmentPostProcessor
    
  3. 测试

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class DemoApplication {
    
    
        private static String projectVersion;
    
        public static void main(String[] args) {
            SpringApplication springApplication = new SpringApplication(DemoApplication.class);
            springApplication.setBannerMode(Banner.Mode.OFF);
            springApplication.run(args);
            System.out.println("projectVersion: " + projectVersion);
        }
    
        @Value("${spring.project.version}")
        public void setProjectVersion(String projectVersion) {
            DemoApplication.projectVersion = projectVersion;
        }
    }
    
    
    

    2021-11-17 15:52:53.738 INFO 16400 — [ main] com.example.demo.DemoApplication : Starting DemoApplication on DESKTOP-U4M55JQ with PID 16400 (G:\workspace\demo\target\classes started by Administrator in G:\workspace\demo)
    2021-11-17 15:52:53.740 INFO 16400 — [ main] com.example.demo.DemoApplication : No active profile set, falling back to default profiles: default
    2021-11-17 15:52:53.996 INFO 16400 — [ main] com.example.demo.DemoApplication : Started DemoApplication in 0.445 seconds (JVM running for 0.774)
    projectVersion: 0.0.1-SNAPSHOT
    Process finished with exit code 0

要创建一个Spring Boot Maven项目,你需要遵循以下步骤: 1. 打开你的集成开发环境(IDE),如Eclipse或IntelliJ IDEA。 2. 在IDE的欢迎页面或主菜单中,选择创建一个新的Maven项目。 3. 在创建新项目的对话框中,选择Maven项目类型,并确保选择合适的Maven版本。 4. 在项目设置中,指定项目的Group Id、Artifact Id和版本号。Group Id是指项目所属的组织或公司名称,Artifact Id是指项目的唯一标识符。 5. 选择项目的存储位置,并指定项目的名称。 6. 在下一步中,选择"Spring Initializr"作为初始模板。 7. 在Spring Initializr中,选择所需的项目元数据。例如,选择Spring Boot版本、编程语言(通常是Java)、选择Web依赖项(如Spring MVC)等。 8. 点击"下一步"来选择项目的附加属性,例如应用程序的名称、描述和包名。 9. 确认项目设置后,点击"完成"来创建项目。 10. 创建完成后,IDE将自动下载项目的依赖项并生成一个基本的项目结构。你可以在src/main/java目录下找到应用程序主类。 11. 可以通过在应用程序主类上添加`@SpringBootApplication`注解来标识该类是一个Spring Boot应用程序的入口点。 12. 在应用程序主类中,你可以定义其他的Spring Bean,并在其上添加适当的注解,例如`@RestController`。 13. 在src/main/resources目录下,你可以添加应用程序的配置文件,如`application.properties`或`application.yml`。 14. 开发你的应用程序,并运行它以验证是否成功创建了Spring Boot Maven项目。 通过按照上述步骤,你就能够成功创建一个Spring Boot Maven项目,并开始你的开发工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值