java - 在 maven 构建时指定 env 依赖属性文件

标签 java spring maven

我是一个不错的 Java 开发人员,但是我继承了一个巨大的 J2EE/JSP/Springs/Maven 项目,而且我完全是一个新手。 Maven & Spring 等

我想要做的就是在构建时指定不同的依赖于环境的.resource 文件。类似的东西

mvn install -Dprofile=development

我希望常规 Java 类在运行时加载该环境特定的属性文件。我不介意 Maven 是否将“application.development.properties”复制到“application.properties”,或者 java 文件中有一些可用的配置变量,如

String env=${profile};

String env = System.getProperty("profile");

或者其他什么。我知道 Stackoverflow 上有很多对此的回应 - 但我现在已经在 google 上花了几个小时,非常接近片段 - 但没有任何东西可以为我把所有这些放在一起。

我确实发现了一件事可行,但它不优雅并且需要读取额外的 Prop 文件。但如果其他人需要这个并且没有人有更好的答案:

您可以包含properties-maven-plugin和“generate-resources”,这将使用POM.xml中定义的属性创建一个属性文件。但是您可以从命令行覆盖 pom 中定义的属性 - 因此将插件包含在您的 pom 中:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <phase>generate-resources</phase> <goals> <goal>write-project-properties</goal> </goals> <configuration> <outputFile> ${project.build.outputDirectory}/envdef.properties </outputFile> </configuration> </execution> </executions> </plugin> 和默认的 envtype 属性: <properties> <envtype>local</envtype> </properties> 您可以使用“mvn -Denvtype=生产安装”进行构建,它将创建一个具有单个属性“envtype”的“envdef.properties”文件 - 生产、本地,无论构建参数是什么。读取该属性文件,获取 Java 代码中的 envtype,然后根据“envtype”的 prop 值读取自定义环境相关属性文件。

就像我说的,丑陋,它有效,我希望有更好的建议。

谢谢

克里斯

最佳答案

您可以像下面提到的那样在您的类中 Autowiring 环境,然后您可以获得其属性值。

@Autowired
private Environment environment;


String jdbcClassName=environment.getRequiredProperty("jdbc.username");

关于java - 在 maven 构建时指定 env 依赖属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294935/

相关文章:

java - Spring Boot 使用自定义表进行身份验证

java - 安装 Apache Maven

java - 异常 java.sql.SQLException : Incorrect string value: '\xF0\x9F\x92\xBC' for column 'Rins' at row 1 at

java - Spring Boot,tomcat 8,找不到 Postgres 的驱动程序

java - 使用 Hector 查询 Cassandra 中的 CompositeType 列

spring - 将 csrf token 和 parameterName 添加到注销链接

java - 没有父pom.xml的spring-boot无法生成war打包

java - 如何在 Spring Boot 中使用自定义注解隐藏带注解的字段?

Java 内存指南

java - 如何查找排序数组中大于 k 的元素数量?