Maven: активировать профиль A, только если профиль B не активирован? - PullRequest
12 голосов
/ 08 сентября 2011

У меня есть два профиля Maven: профиль A и профиль B.«B» следует активировать, только если «A» не активировано.Поэтому, если бы я позвонил

mvn install

, выполняется профиль-B (но не профиль-A).Но если бы я позвонил

mvn install -Pprofile-A

, то выполнялся только профиль-A (но не профиль-B).

Есть какие-нибудь намеки, как мне написать свой pom.xml для достижения этой цели?

Я уже пробовал это, но это не работает:

<profiles>
  <profile>
    <id>profile-A</id>
    <activation>
      <activeByDefault>false</activeByDefault>
    </activation>
    ...
  </profile>

  <profile>
    <id>profile-B</id>
    <activation>
      <activeByDefault>true</activeByDefault>
      <property>
        <name>!profile-A</name>
      </property>       
      ...
    </activation>
    ...
  </profile>
</profiles>

1 Ответ

9 голосов
/ 08 сентября 2011

Я думаю, что для того, чтобы ваша примерная командная строка работала должным образом, все, что вам нужно, это <activeByDefault>true</activeByDefault> для профиля B.

http://maven.apache.org/guides/introduction/introduction-to-profiles.html состояния:

Все профили, которые активны по умолчанию, автоматически деактивируются, когда профиль в POM активируется в командной строке или через конфигурацию активации.

...