Maven: использование плагина на основе профиля

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

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

<profiles>
    <id>release</id>      
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    ..
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</profiles>

Ответ 1

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

Как создать профиль? Как это варьируется в зависимости от тип используемого профиля?

В принципе, как только вы это понимаете, обратите внимание, что то, что вы разместили в своем профиле, довольно близко к тому, что у вас вне вашего профиля. При этом, если вам нужен раздел, посвященный профилю, он должен эмулировать то, что у вас было бы вне профиля - если вы посмотрите на pom.xsd, это то же самое, что я считаю.

Итак, например:

<profiles>
    <profile>
        <id>full-build</id>
        <activation>
            <property>
                <name>build</name>
                <value>full</value>
            </property>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo.webstart</groupId>
                    <artifactId>webstart-maven-plugin</artifactId>
                    <version>1.0-beta-1</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>jnlp</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <resourcesDirectory>src/main/web</resourcesDirectory>
                        ....

Это будет вызвано запуском: mvn package -Dbuild=full

Надеюсь, это поможет.

Ответ 2

Использование pluginManagement не приведет к запуску плагина сборки. Он используется для указания версии плагина и информации о конфигурации для дочерних POM. Также вам не хватает дочернего элемента профиля "профили". Наконец, если вы не планируете активировать профиль через -P, вам понадобятся некоторые критерии активации.