21 мая 2012 г., 12:31 отssedano

В Maven может ли профиль перекрывать модули (не включать какие-либо)

Вmaven, как только вы определите свойmodules в тебеpom.xml все профили объединяют модули, определенные в них: (только соответствующая часть)

<project>
    <modules>
        <module>module1</module>
    </modules>
    <profiles>
         <profile>
             <id>pr1</id>
             <modules>
                 <moudule>module2</module>
             </modules>

Если вы выполняетеmvn clean он передаст командуmodule1.

Если ты выдаешьmvn clean -Ppr1 это перейдет кmodule1 а такжеmodule2.

Интересно, если вmaven 3 можно иметьpom.xml с подмодулями и переопределите это. Я имею в виду выполнить профиль, который вместо добавления своих собственных модулей в сборку заставляет такие как:

<project>
    <!-- omitted -->
    <modules>
        <!-- modules -->
    </modules>
    <build>
        <!-- build -->
    </build>
    <profiles>
        <profile>
             <!-- This profile with no modules -->
        </profile>
    </profiles>
</project>

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

<configuration self.combine="override"

С уважением

Ssedano

Ответы на вопрос(0)

21 мая 2012 г., 16:47 отMichał Kalinowski

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

Однако вместо этого вы можете создать некий профиль по умолчанию (автор<activeByDefault>true</activeByDefault> в<activation>аздел @), который активируется, когда не вызываются никакие другие профили и помещает туда список модулей по умолчанию. Затем, когда профиль не указан при вызове сборки Maven, этот профиль «по умолчанию» используется, но когда вы явно вызываете хотя бы один профиль, это не так, поэтому вы можете таким образом определить список модулей с нуля.

21 мая 2012 г., 16:49 отkhmarbaise

Ты можешь делать такие вещи:

  <profiles>
    <profile>
      <id>run-xyz</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <modules>
        <module>www-ab</module>
        <module>www-cd</module>
      </modules>
    </profile>

    <profile>
      <id>run-its</id>
      <activation>
        <activeByDefault>false</activeByDefault>
      </activation>
      <modules>
        <module>www-db</module>
        <module>www-it</module>
      </modules>
    </profile>
  </profiles>

Если ты говоришь о таких вещах. Но я бы порекомендовал быть очень осторожным с такими вещами.

Вопрос только в том, как установить activeByDefault. Благодаря этому можно создавать более или менее любую комбинацию.

08 июн. 2015 г., 05:09 отkaqqao

Google по-прежнему высоко оценивает его, поэтому имеет смысл добавить новый ответ.

Вы можете использовать активация отсутствием свойства трюк, чтобы достичь того, чего ты хочешь.

<profiles>
        <!-- By default, include the modules -->
        <profile>
            <id>full-build</id>
            <activation>
                <!-- Activation by absence of a property. Run normally, without -Dfull-build -->
                <property>
                    <name>!skip-modules</name>
                </property>
            </activation>
            <modules>
                <module>module1</module>
                <module>module2</module>
                <module>module3</module>
            </modules>
        </profile>

        <!-- No-modules build -->
        <profile>
            <id>no-modules</id>
            <activation>
                <!-- Activation by a property. Run with -Dskip-modules to activate -->
                <property>
                    <name>skip-modules</name>
                </property>
            </activation>
            <modules>
            </modules>
        </profile>
    </profiles>

ВАШ ОТВЕТ НА ВОПРОС