Maven: использование плагина на основе профиля - PullRequest
12 голосов
/ 30 января 2012

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

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

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

Ответы [ 2 ]

34 голосов
/ 30 января 2012

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

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

По сути, как только вы это поймете, обратите внимание, что то, что вы помещаете в раздел своего профиля, очень близко к тому, что у вас есть за пределами вашего профиля. При этом, если вам нужен специфичный для профиля раздел сборки, он должен эмулировать то, что у вас будет вне профиля - если вы посмотрите на 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

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

5 голосов
/ 30 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...