Простой
Я делал это в прошлом, это очень просто, есть один файл, например default.config
, который проверяется в управлении версиями, есть другой файл с именем local.default.config
, который находится в вашем svn.ignore
файле.Пусть Maven скопирует local.default.config
вместо default.config
, если он существует, или попросите его скопировать оба, и ваше приложение будет искать local.default.config
, а затем default.config
, если первое не существует.
Вы можетедаже используйте одно и то же имя default.config
, и приложение будет выглядеть в нескольких местах, при этом ваш home.dir
будет иметь самый высокий приоритет, а затем - другое место.
Идеальная версия этого файла будет читать все файлы в некоторыхПриоритет и используйте последнее найденное свойство из всех файлов, тогда вы можете иметь default.config
со всеми вашими свойствами и local.default.config
только с немногими, которые нужно изменить для вашей локальной конфигурации.
Более изощренный Maven Oriented
Maven имеет несколько способов добраться туда, куда вы хотите:
- Используйте Maven
profiles
, чтобы включить или отключить property
, который содержитимя файла, которое вы хотите использовать, и используйте maven-resources-plugin , чтобы скопировать файл, указанный в profile
. - Используйте функцию
filter
в Maven с profile
Driven properties
. - Используйте maven-replacer-plugin для манипулирования файлом непосредственно на основе
profile
driven properties
- Используйте maven-dependency-plugin и сохраните ваши файлы в вашем локальном репозитории Maven и извлеките их из их во время фазы
package
.
profiles
являются очень мощными и идеально подходят для настройки Maven для различных сред.У меня есть профиль local
, dev
, qa
и release
в каждом pom.xml
.Я устанавливаю профиль local
активным по умолчанию и выбираю остальные по мере необходимости с помощью mvn [goal] -P dev
, который автоматически отключит local
и использует properties
, указанный в профиле dev
.
Более изощренный SVN-ориентированный
Вы можете работать с локальной веткой development
и иметь только локальную конфигурацию в этой ветке, и при слиянии ваш код возвращается к trunk
исключить ваши изменения в файле конфигурации из слияния. Это действительно то, как я бы это сделал, поскольку мы используем Git.В SVN ветвление не так болезненно, что это не вариант
Я уверен, что есть и другие решения Maven.В любом случае вы решите это svn.ignore ваш друг.И использование Maven profile
может быть очень мощным.