我是一名优秀的Java开发人员,但我继承了一个庞大的J2EE / JSP / Springs / Maven项目,而且我是一个新手。 Maven&春天等。
我想要做的就是在构建时指定不同的env依赖.resource文件。
之类的东西 mvn install -Dprofile=development
我希望常规Java类在运行时加载特定于环境的属性文件。我不介意Maven将“application.development.properties”复制到“application.properties”,或者java文件中有一些配置变量可用,如
String env=${profile};
或
String env = System.getProperty("profile");
或其他什么。我知道有很多Stackoverflow对此的反应 - 但我现在花了几个小时在谷歌上,与片段真正接近 - 但没有任何东西可以把它放在一起给我。
我确实发现了一件有用的东西,但它不够优雅。需要额外的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 = production install”&amp;它将创建一个“envdef.properties”文件,其中包含单个属性“envtype” - production,local,无论构建参数如何。读取该属性文件,获取Java代码中的envtype,然后根据'envtype'的prop值读取自定义环境相关属性文件。
就像我说的那样,丑陋,它有效,我希望有更好的建议。
谢谢,
克里斯
答案 0 :(得分:0)
您可以在下面提到的类中使用Autowired环境,然后您可以获取其属性值。
@Autowired
private Environment environment;
String jdbcClassName=environment.getRequiredProperty("jdbc.username");