我是一个不错的 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/