Java 在maven生成时指定依赖于环境的属性文件
我是一个不错的Java开发人员,但我继承了一个巨大的J2EE/JSP/Springs/Maven项目,我完全是一个新手。马文和斯普林等 我只想在构建时指定不同的依赖于环境的.resource文件。差不多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文件中有一些配置变量,如
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建议的解决方案时,可以指定属性文件路径。换句话说,将属性文件保持在构建外部,并使用命令行指向正确的文件