Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在maven生成时指定依赖于环境的属性文件_Java_Spring_Maven - Fatal编程技术网

Java 在maven生成时指定依赖于环境的属性文件

Java 在maven生成时指定依赖于环境的属性文件,java,spring,maven,Java,Spring,Maven,我是一个不错的Java开发人员,但我继承了一个巨大的J2EE/JSP/Springs/Maven项目,我完全是一个新手。马文和斯普林等 我只想在构建时指定不同的依赖于环境的.resource文件。差不多 mvn安装-Dprofile=development 我希望常规Java类在运行时加载特定于环境的属性文件。我不介意Maven是否将“application.development.properties”复制到“application.properties”,或者java文件中有一些配置变量,如

我是一个不错的Java开发人员,但我继承了一个巨大的J2EE/JSP/Springs/Maven项目,我完全是一个新手。马文和斯普林等

我只想在构建时指定不同的依赖于环境的.resource文件。差不多

mvn安装-Dprofile=development

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

String env=${profile};

String env=System.getProperty(“profile”)

或者别的什么。我知道有很多Stackoverflow的回应,但我花了好几个小时在google上,非常接近于这些片段,但是没有任何东西能帮我把它们整合在一起

我确实想出了一个可行的办法,但它并不雅致&需要额外读取道具文件。但如果其他人需要这个&没有人有更好的答案:

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


org.codehaus.mojo
属性maven插件
1.0.0
产生资源
写入项目属性
${project.build.outputDirectory}/envdef.properties
和默认的envtype属性:

地方的
您可以使用“mvn-Denvtype=production install”进行构建&它将创建一个“envdef.properties”文件,其中包含单个属性“envtype”-production,local,无论构建参数是什么。读取该属性文件,在Java代码中获取envtype,然后根据prop值'envtype'读取自定义的依赖于环境的属性文件

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

谢谢


Chris

您可以在类中自动连接环境,如下面所述,然后可以获取其属性值

@Autowired
private Environment environment;


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

您可以在类中自动连接环境,如下面所述,然后可以获取其属性值

@Autowired
private Environment environment;


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

我认为这是同样的问题,看看PropertySource和PropertySources枚举。当使用-D标志运行应用程序并使用Tejal建议的解决方案时,可以指定属性文件路径。换句话说,将属性文件放在构建的外部,并使用命令行指向适当的文件。我认为这是一个相同的问题,请看一下PropertySource和PropertySources枚举。当使用-D标志运行应用程序并使用Tejal建议的解决方案时,可以指定属性文件路径。换句话说,将属性文件保持在构建外部,并使用命令行指向正确的文件