У меня есть большой проект Maven с одним главным модулем и множеством детей, организованный в красивой древовидной структуре. Однако для некоторых модулей требуются специальные настройки, которые могут вызвать неправильное поведение в других модулях. Например, в Hadoop есть модули, которые нуждаются в уровне источника Java 1.7, все остальные модули Java используют исходный уровень 1,8, и теперь в это дерево вводятся модули Scala, которые компилируются с помощью scala-maven-plugin
, для которого требуются специальные настройки для maven-compiler-plugin
при компиляции смешанных модулей Java/Scala.Как активировать профиль Maven на pom.xml?
В прошлом у меня просто был мастер-модуль для материала Hadoop, который определил исходный уровень 1.7 и добавил все необходимые зависимости Hadoop. Теперь я хочу избежать определения другого основного модуля для материала Hadoop, написанного на Scala, и еще одного модуля для Non-Hadoop в Scala. Я думал, что я мог бы использовать профили, поэтому я определил два профиля в моем мастер-POM:
java
активируетmaven-javadoc-plugin
scala
не активируетmaven-javadoc-plugin
ноmaven-scala-plugin
и настраивает его как в the example from its documentation
В главном POM профиль java
по умолчанию установлен как активный, поскольку Java по умолчанию. Когда в проекте используется Scala, я хочу активировать профиль scala
и деактивировать java
, но настройка activeByDefault
на false
для профиля java
не оказывает влияния, в результате чего возникают ошибки компиляции.
Итак, есть ли способ включить профиль, специфичный для модуля, без необходимости устанавливать его вручную в каждой помпе?
Это означает, что, когда у меня есть модули A, B и C, а A и B используют профиль Java, а C использует Scala, я должен отдельно добавлять эти профили во все модули? – rabejens