Дочерний профиль Maven активирован в свойстве родительского профиля

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

родитель pom.xml

<profiles>
    <profile>
        <id>emptyModules</id>

        <modules>
            <module>child</module>
        </modules>

        <properties>
            <emptyModules>true</emptyModules>
        </properties>
    </profile>
</profiles>

У ребенка есть два профиля один с некоторыми модулями другой без

<profiles>
    <profile>
        <id>modules</id>

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

        <modules>
            <module>module1</module>
            <module>module2</module>
        </modules>
    </profile>
    <profile>
        <id>emptyModules</id>

        <activation>
            <property>
                <name>emptyModules</name>
                <value>true</value>
            </property>
        </activation>

    </profile>
</profiles>

Когда я активирую родительский профиль emptyModules, я хочу, чтобы дочерний профиль emptyModule активировался, однако вместо этого используется профиль по умолчанию! Любые идеи?


person PDStat    schedule 25.10.2017    source источник
comment
Я не думаю, что это возможно, потому что активация профиля происходит в самом начале процесса сборки. Если я правильно понимаю, это делается до выполнения какой-либо части pom.   -  person J Fabian Meier    schedule 25.10.2017
comment
Какую команду Maven вы используете при активации родительского профиля emptyModules?   -  person Pierre B.    schedule 25.10.2017
comment
Никогда не добавляйте и не удаляйте модули по профилям...иначе это приведет к проблемам... Вопрос зачем вам это? Какую проблему вы пытаетесь решить...   -  person khmarbaise    schedule 25.10.2017
comment
Просто для полноты я сделал небольшой пример того, что у вас было, и у меня это сработало mvn clean install -P emptyModules строил только родительский и дочерний модуль без каких-либо подмодулей, а mvn clean install строил все. Если вас интересует код, просто дайте мне знать.   -  person funfried    schedule 25.10.2017


Ответы (1)


Вы можете активировать профили на основе свойств:

<profiles>
  <profile>
    <activation>
      <property>
        <name>someprop</name>
      </property>
    </activation>
    ...
  </profile>
</profiles>

Это можно использовать для одновременной активации родительского и дочернего профилей.

person J Fabian Meier    schedule 25.10.2017
comment
Разве это не то, что у меня есть выше в профиле ребенка помпона? - person PDStat; 25.10.2017
comment
Извините, я не прочитал достаточно внимательно. Не думаю, что это возможно сделать по-вашему, но вы можете задать параметры в командной строке и использовать в разных профилях. - person J Fabian Meier; 25.10.2017