首页 > 其他分享 >如何在class文件中使用pom中profile级别的 <properties>

如何在class文件中使用pom中profile级别的 <properties>

时间:2024-09-03 11:36:37浏览次数:4  
标签:profile prod String class pom server properties

在 Java 代码中使用 pom.xml 中 profile 级别的 <properties>,最常见和推荐的方式是通过 Maven Resource Filtering。这个过程涉及到以下步骤:

  1. 在 pom.xml 中定义 profile 和 properties:

    <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <db.url>jdbc:mysql://localhost:3306/mydb_dev</db.url>
                <server.address>localhost</server.address>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <db.url>jdbc:mysql://prod-db:3306/mydb_prod</db.url>
                <server.address>prod-server</server.address>
            </properties>
        </profile>
    </profiles>

     

  2. 在 src/main/resources 中创建一个.properties 文件:

    database.url=${db.url}
    server.address=${server.address}
  3. 在 pom.xml 中配置资源过滤:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
  4. 在 Java 代码中加载和使用属性:

    • 使用 Properties 类:

      import java.io.InputStream;
      import java.util.Properties;
      
      //...
      
      Properties props = new Properties();
      InputStream inputStream = getClass().getClassLoader().getResourceAsStream("application.properties");
      props.load(inputStream);
      
      String databaseUrl = props.getProperty("database.url");
      String serverAddress = props.getProperty("server.address");

       

    • 使用 Spring 的 @Value 注解:

      import org.springframework.beans.factory.annotation.Value;
      
      //...
      
      @Value("${database.url}")
      private String databaseUrl;
      
      @Value("${server.address}")
      private String serverAddress;
    • 当你在开发环境中运行 Maven 构建时,dev profile 是默认激活的,所以 application.properties 文件中会被替换为 dev profile 中的属性值。如果你想在构建时使用 prod profile,可以在命令行中添加 -Pprod 参数,例如:mvn package -Pprod

这样,application.properties 文件中就会被替换为 prod profile 中的属性值。无论你在哪个环境中构建和运行应用,Java 代码中使用的属性值都会根据当前激活的 profile 自动更新。

标签:profile,prod,String,class,pom,server,properties
From: https://www.cnblogs.com/wangcp-2014/p/18394241

相关文章

  • class RepeatDataset在哪定义的?
     对于mmaction2工具箱,猜测这个RepeatDataset类大概率是在MMEngine包里面。找到路径:miniconda3/envs/openmmlab/lib/python3.8/site-packages/mmengine/dataset/dataset_wrapper.py果然发现RepeatDataset类放到了mmengine包里面 pyskl/configs/rgbpose_conv3d/rgb_o......
  • Pomegranate health benefits
    Pomegranatejuiceisknownforitshealthbenefitsduetoitshighconcentrationofantioxidants,vitamins,andminerals.Herearesomeofthekeyhealthbenefits:RichinAntioxidants:Pomegranatejuiceispackedwithpowerfulantioxidants,particularlyp......
  • Paper Reading: Multi-class imbalance problem: A multi-objective solution
    目录研究动机文章贡献本文方法问题定义多分类多目标选择集成框架多类样本的客观建模理论分析实验结果数据集和实验设置对比实验结果运行时间优化边界的有效性优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重和实力所限,可能有理解不到位的地方。具......
  • 基于Python的机器学习系列(18):梯度提升分类(Gradient Boosting Classification)
    简介        梯度提升(GradientBoosting)是一种集成学习方法,通过逐步添加新的预测器来改进模型。在回归问题中,我们使用梯度来最小化残差。在分类问题中,我们可以利用梯度提升来进行二分类或多分类任务。与回归不同,分类问题需要使用如softmax这样的概率模型来处理类别标......
  • Android开发 - ClassLoader 加载外部类解析
    ClassLoader是什么ClassLoader主要作用是将字节码文件(.class文件)加载到Java虚拟机(JVM)中,以便应用程序可以使用这些类ClassLoader的好处模块化加载:应用程序可能由多个模块组成,而这些模块可能需要按需加载插件机制:很多应用支持插件化,插件在安装或更新后需要动态加载......
  • 【K8s】专题十二(4):Kubernetes 存储之 StorageClass
    本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口Linux专栏 | Docker专栏 | Kubernetes专栏往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法【Docker】(全网首发)Kyli......
  • 使用ClassLoader.getSystemResource更新上线后空指针异常
     目录 问题描述:原问题代码:问题原因以及解决思路:解决方法:问题描述:项目中使用到一个功能,于是在资源路径下加了点依赖包:更新上线后,发现使用ClassLoader.getSystemResource("dependencies")找不到依赖包原问题代码:URLresourceURL=ClassLoader.getSystemResource(......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器50
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......
  • maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
    开心一刻有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹概述maven-shade-plugin官网已经介绍的很详细了,我给大家简单翻译一下Thispluginprovidesthecapabilitytopackagetheartifactinanuber-jar,includingitsdependenciesa......
  • MyBatis启动报Cause: org.apache.ibatis.builder.BuilderException: Error resolving
    mybatis-plus:**#搜索指定包别名,对指定报名下的所有实体进行Alias,就可以在mapper.xml中使用alias来设置parameterType参数**typeAliasesPackage:com.rcs.**.domain**#配置mapper的扫描,找到所有的mapper.xml映射文件,对该目录下的所有mapper.xml进行扫描装入Mappers......