почему активация maven по свойству не работает?

У меня есть профиль maven, который активируется свойством, установленным в том же файле:

<properties>
  <platform>vanilla</platform>
</properties>


<profile>
  <id>spark-2.2</id>

  <activation>
    <property>
      <name>platform</name>
      <value>vanilla</value>
    </property>
  </activation>

  <modules>
    <module>dependency/preload</module>
  </modules>
</profile>

однако, когда я запускаю mvn install, зависимость/предварительная загрузка не отображаются в последовательности сборки реактора, что в конечном итоге приводит к ошибке компиляции. Почему свойство в том же файле бесполезно и что мне делать, чтобы это исправить?


person tribbloid    schedule 12.11.2018    source источник
comment
Возможный дубликат этого вопроса.   -  person user944849    schedule 13.11.2018
comment
Возможный дубликат Maven: свойство для активации профиля в подмодулях   -  person pirho    schedule 13.11.2018


Ответы (1)


Есть ли смысл, чтобы это работало? Зачем вам исправлять его статически, чтобы тот же самый pom?

Обычно, когда у вас много профилей, вы можете захотеть иметь один как:

<activation>
    <activeByDefault>true</activeByDefault>
</activation>

но конечно не обязательно. Затем другие профили запускаются явно или теми способами, которые представлены позже.

Ниже я прикрепил части из Введение в создание профилей.

Профиль можно запустить/активировать несколькими способами:

  • Явно
  • Через настройки Maven
  • На основе переменных среды
  • Настройки ОС
  • Наличие или отсутствие файлов

Часть переменные среды — это та часть, которую, я думаю, вы пытаетесь использовать. А чтобы было немного запутаннее, позже мы будем называть его системным свойством. Так что это системное свойство. Позже в том же документе вы увидите использование:

<activation>
  <property>
    <name>debug</name>
  </property>
</activation>

будет активирован (например):

mvn install -Ddebug

Однако, например, следующее не работает:

export debug=true
mvn install

Итак, почему свойства pom не применяются как системное свойство или какое-либо другое свойство. Я думаю, это потому, что профиль должен иметь возможность переопределять значения свойств pom, которые затем можно было бы рассматривать как значения по умолчанию.

Однако позже в том же документе несколько строк:

Профили в POM
...
Профили, указанные в POM, могут изменять следующие элементы POM:
...
‹свойства› (фактически недоступны в основном POM, но используются за кулисами )

person pirho    schedule 12.11.2018
comment
‹activeByDefault›true‹/activeByDefault› бесполезен, поскольку он деактивируется после настройки другого профиля, см. are-activebydefault-active-even-if-another-prof" title="как сохранить профили maven, которые активны по умолчанию, активными, даже если другой prof"> stackoverflow.com/questions/5309379/ - person tribbloid; 13.11.2018
comment
кроме того, системное свойство и переменная среды - яблоко и апельсин (если вы спросите кого-нибудь, кто какое-то время работал над java) - person tribbloid; 13.11.2018
comment
1. Полезность зависит от случая. 2. Да, документы могли бы быть более понятными. 3. Может быть, но это только то, что написано в документах. Смотрите небольшое обновление ответа (скоро). - person pirho; 13.11.2018
comment
большое спасибо, хоть и не самый оптимальный вариант, соглашусь - person tribbloid; 24.12.2018