Вы, кажется, немного подозрительно относитесь к такому подходу, но вы не совсем уверены, почему - в конце концов, это довольно удобно. Во всяком случае, это то, что я чувствую по этому поводу: я действительно не знаю почему, но это кажется несколько странным.
Давайте рассмотрим эти два вопроса:
а) для чего предназначены профили?
б) с какими альтернативными подходами мы должны сравнить ваш подход?
Что касается а), я думаю, что профили предназначены для разных сред сборки или выполнения. Вы можете зависеть от локально установленного программного обеспечения, где вы будете использовать профиль для определения пути к исполняемому файлу в соответствующих средах. Или у вас могут быть профили для разных конфигураций среды выполнения, таких как «разработка», «тестирование», «производство».
Подробнее об этом можно узнать по http://maven.apache.org/guides/mini/guide-building-for-different-environments.html и http://maven.apache.org/guides/introduction/introduction-to-profiles.html.
Что касается б), идеи, которые приходят мне в голову:
- запуск плагинов со свойствами командной строки. Например, mvn -Dfitnesse = true, развернуть. Как хорошо известный -DdownloadSources = true для плагина eclipse или -Dmaven.test.skip = true для верного запуска.
Но для этого необходимо, чтобы плагин имел флаг для запуска выполнения. Не все плагины, в которых вы нуждаетесь, могут иметь это.
- Называя цели явно. Вы можете назвать несколько целей в одной командной строке, например, "mvn clean package war: exploded". Когда фитнес выполняется автоматически (с использованием соответствующего профиля), это означает, что его выполнение связано с фазой жизненного цикла. То есть, когда эта фаза в жизненном цикле достигнута, плагин запускается.
Вместо того, чтобы связывать выполнение плагина с фазами жизненного цикла, вы должны иметь возможность включать плагин, но выполнять его только тогда, когда он вызывается явно.
Таким образом, ваш вызов будет выглядеть так: «mvn fitnesse: run source: jar deploy».
Ответ на вопрос а) может объяснить «странность». Это не то, для чего предназначены профили.
Поэтому я думаю, что альтернатива 2 могла бы быть лучшим подходом. Использование профилей может стать проблемой, когда в игру вступают «настоящие» профили для разных сред выполнения или сборки. В результате вы можете получить смесь из профилей, которая может привести к путанице, где профили означают совершенно разные вещи (например, «тест» будет обозначать среду, а «фитнес» - цель)
Если бы вы просто назвали цели явно, я думаю, это было бы очень ясно и гибко. Запоминание имен плагинов / целей не должно быть более сложным, чем запоминание имен профилей.