Profiles может быть указан в вашем POM в родительском POM в ваших настройках. Следовательно, просмотр только вашего POM-файла может быть недостаточным.
Запуск mvn help:active-profiles
даст вам список всех активных профилей и из какого источника (пом или настройки).
Запуск mvn help:all-profiles
предоставит вам список всех доступных профилей, активных и из которых источник (pom или настройки).
Запуск mvn help:effective-pom -Doutput=full-pom.xml
предоставит вам полный файл POM (в файле сгенерированный full-pom.xml
), как слияние текущего pom, родительского помпы и настроек. Это было бы полным источником истины.
Структура вы описали для проекта Maven мульти-модуля, что означает A
является aggregator проект (с упаковки pom
, его только поставка является ПОМ файла, его единственная функция заключается в обеспечении modules
он будет строить).
Однако будьте осторожны, что в агрегации Maven и inheritance существуют две разные концепции, которые часто используются вместе: агрегация означает, что я буду строить как часть моей сборки всех моих определенных модулей; Наследование означает, что я наследую конфигурацию от моего родительского пом. Таким образом, A\1
может наследовать профили из проекта A
, если в pom A\1
вы найдете A
, который определяется как parent
(что часто бывает, чтобы иметь агрегатор, который также является родительским для всех определенных модулей).
Зачем нужен агрегатор?Чтобы иметь централизованное построение и расположение взаимосвязанных подпроектов, в то же время сохраняя хорошее разделение проблем между подмодулями. Более того, в качестве лучших практик Maven, проект должен генерировать только один артефакт, поэтому может быть, например, иметь веб-приложение, имеющее логику в одном модуле, военное поколение в другом модуле, например, слух в еще одном модуле.
Зачем иметь наследование? Чтобы иметь централизованное место для установки общей/общей конфигурации, например профилей, а также зависимостей и dependencies management.
Наконец, это недоразумение, и, следовательно, быть также известно, что:
- Если профиль активен по умолчанию в Maven, он будет частью сборки по умолчанию. Однако, если вы активируете профиль через командную строку (через опцию
-P
), вы затем активируете запрошенный профиль, а также и автоматически деактивируете тот, который был активным по умолчанию
- указанный выше механизм не применяется к профилям, определенным в
settings.xml
вашей установки maven (которые применяются по умолчанию, если они активированы, для всех Maven на соответствующем компьютере).
Update Еще замечание по этому ответу, мобилизуемого некоторые комментарии: а Maven сборка указана как часть секции build
(поток плагин казни), которые не обязательно профилей. Профили обычно определяются для добавления дальнейшего поведения в сборку, но хорошая практика заключается в том, чтобы построить сборку успешно независимо от любого активируемого профиля, то есть мне не нужно знать о определенных профилях для запуска вашей сборки, это основная концепция maven, гармонизация и согласование конфигурации: учитывая проект Maven, я всегда могу предположить, что просто mvn clean install
выполнит требуемую магию.
Для получения списка распространенных вопросов о старте с Maven, официальный Getting Started Guide уже дает хорошую помощь.
Также ознакомьтесь с Profiles Pitfalls официального введения в профили для дальнейшего ознакомления с профилями.
Вы просмотрели документы Maven для [профилей] (http://maven.apache.org/guides/introduction/introduction-to-profiles.html)? Кроме того, вполне возможно, что по умолчанию профиль не активен. Однако, чтобы узнать, что происходит во время сборки, вы можете выполнить 'mvn help: active-profiles'. – nickb
Благодарим вас за ссылку и ссылку на команду mvn. – Elijah
Выполнение команды * mvn help: active-profiles * предоставляет эту информацию. Действуют следующие профили: - main (источник: внешний) - defaultProfile (источник: внешний) ........... ... Я предполагаю, что это часть функциональности по умолчанию для Maven, но не говорит мне, что она делает. Так много, чтобы учиться так мало времени. – Elijah