Я хороший разработчик Java, но я унаследовал огромный проект J2EE/JSP/Springs/Maven, и я совсем новичок в этом. Мейвен и Спринг и др.
Все, что я хочу сделать, это указать разные файлы .resource, зависящие от env, во время сборки w. что-то типа
mvn install -Dprofile=development
И я хочу, чтобы обычные классы Java загружали этот файл свойств среды во время выполнения. Я не возражаю, если Maven скопирует «application.development.properties» в «application.properties» или в java-файле есть какая-то переменная конфигурации, например
String env=${profile};
or
String env = System.getProperty("profile");
или что-то еще. Я знаю, что есть МНОГО ответов Stackoverflow почти на это, но я провел несколько часов в Google, подойдя очень близко к фрагментам, но ничего, что могло бы собрать все это воедино для меня.
Я понял ОДНУ вещь, которая работает, но она неэлегантна и требует чтения дополнительного файла поддержки. Но на случай, если кому-то это понадобится, и ни у кого нет лучшего ответа:
Вы можете включить 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" и он создаст файл "envdef.properties" с единственным свойством "envtype" - производственный, локальный, независимо от параметров сборки. Прочтите этот файл свойств, получите тип envtype в своем коде Java, затем прочитайте файл свойств, зависящих от пользовательской среды, на основе значения свойства «envtype».
Как я уже сказал, уродливо, это работает, я надеюсь, что есть лучшее предложение.
Спасибо,
Крис