Условное выполнение плагина maven в зависимости от свойства профиля - PullRequest
0 голосов
/ 19 февраля 2020

С учетом пом. xml

<plugin>
    <groupId>com.myplugin</groupId>
    <artifactId>my-plugin</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <id>generate-file</id>
            <phase>package</phase>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <templateFile>
                    ${project.build.directory}/template.json
                </templateFile>
                <outputFile>
                    ${project.build.directory}/${env}-${server}-file.json
                </outputFile>
            </configuration>
        </execution>
        <execution>
            <id>send-file</id>
            <phase>package</phase>
            <goals>
                <goal>send</goal>
            </goals>
            <configuration>
                <file>
                    ${project.build.directory}/${env}-${server}-file.json
                </file>
            </configuration>
        </execution>
    </executions>
</plugin>

<profiles>
    <profile>
        <id>dev-a</id>
        <properties>
            <env>test</env>
            <server>serverA</server>
        </properties>
    </profile>
    <profile>
        <id>prod-a</id>
        <properties>
            <env>prod</env>
            <server>serverA</server>
        </properties>
    </profile>
    <profile>
        <id>dev-b</id>
        <properties>
            <env>test</env>
            <server>serverB</server>
        </properties>
    </profile>
    <profile>
        <id>prod-b</id>
        <properties>
            <env>prod</env>
            <server>serverB</server>
        </properties>
    </profile>
</profiles>

Как выполнить задачу send-file, только если свойство env равно prod? Я знаю, что могу переместить тег plugin в профили dev-a и prod-a в этом примере, но мне нужно будет продублировать эту часть для каждого профиля, что не кажется хорошим решением. В моем случае у меня определено гораздо больше профилей, а определение исполнения плагина намного длиннее, это сильно загромождает мой pom-файл и делает любые изменения очень подверженными ошибкам. Есть ли какой-либо условный тег, который я могу передать выполнению, который позволил бы мне решить, вызывается он или нет? Или, может быть, есть возможность исключить выполнение по идентификатору в теге профиля?

Спасибо за помощь!

1 Ответ

0 голосов
/ 19 февраля 2020

Если my-plugin действительно ваш плагин (т.е. вы его написали), проще всего было бы просто реализовать логику c, которую вы хотите внутри плагина.

...