在maven build中指定env依赖属性文件

时间:2017-09-19 07:54:19

标签: java spring maven

我是一名优秀的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值读取自定义环境相关属性文件。

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

谢谢,

克里斯

1 个答案:

答案 0 :(得分:0)

您可以在下面提到的类中使用Autowired环境,然后您可以获取其属性值。

@Autowired
private Environment environment;


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