Исходя из вашего заявления " Проект B недавно появился на свет и мало чем отличается от проекта А, а именно использует несколько разных файлов конфигурации. " Я бы сказал, что вам не нужны 2 отдельных проекта , Вы можете иметь только один проект и на основе активированного профиля выбирать разные конфигурации. При таком подходе файлы конфигурации для обоих случаев могут иметь одинаковое имя, но разное содержимое.
Структура вашего проекта будет выглядеть (в качестве примера):
корневая папка проекта:
pom.xml
- src
-- main
--- resources-profileA
--- resources-profileB
Теперь pom.xml содержит 2 профиля: profileA и profileB. Каждый профиль определяет свою собственную сборку / ресурсы.
<profiles>
<profile>
<id>projectA</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileA</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>projectB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileB</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
Более того, вы можете сделать один профиль активным по умолчанию. Это поможет вашей среде разработки автоматически использовать ее. Если вы хотите иметь активный профиль по умолчанию для этого профиля, вы можете назвать папку ресурсов просто resources (имя maven по умолчанию) и оставить другое имя для второго профиля.
ОБНОВЛЕНИЕ:
Для упрощения и добавления некоторых дополнительных файлов вы можете использовать для профиля проекта A maven по умолчанию и определить только профиль для проекта B.
Корневая папка проекта становится:
pom.xml
- src
-- main
--- resources
--- resources-profileB
и pom.xml будет содержать только один профиль по умолчанию:
<profiles>
<profile>
<id>projectB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileB</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
Как построить для двух профилей:
Сборка без профиля эквивалентна построению для проекта А:
mvn clean install
Buid для профиля projectB будет игнорировать ресурсы в папке по умолчанию и будет использовать только ресурсы, определенные в профиле (src / main / resources-profileB).
mvn clean install -P projectB