Maven: Как использовать плагин условно? - PullRequest
0 голосов
/ 15 января 2019

У меня есть разные профили (dev / local / qa / prod и т. Д.), Определенные в моем файле pom.xml, и Я хотел бы активировать плагин для любого профиля, отличного от профиля под названием "local", Или, другими словами, я хотел бы деактивировать этот плагин для профиля с именем «local», этот плагин изменит разрешение файлов типа .sh в определенной директории.

Мой плагин:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.6.0</version>
    <executions>
        <execution>
            <id>script-chmod</id>
            <phase>install</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>sh</executable>
                <arguments>
                    <argument>-c</argument>
                    <argument>chmod 744 ${SCRIPT_INSTALL_DIR}/*.sh</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Это решение также работает: (обратите внимание, что часть "none" в атрибуте "фаза" здесь с тем же идентификатором выполнения, как определено для плагина)

<profile>
        <id>local</id>
        <activation/>
        <properties>
            <INSTALL_MACHINE_LIST>....</INSTALL_MACHINE_LIST>
            <COPY_MODE>auto</COPY_MODE>
            <current_env>......</current_env>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.6.0</version>
                    <executions>
                        <execution>
                            <id>script-chmod</id>
                            <phase>none</phase>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
0 голосов
/ 16 января 2019

Настройте плагин вне раздела <profiles> и используйте свойство exec.skip в локальном профиле:

<profile>
    <id>local</id>
    <properties>
        <exec.skip>true</exec.skip>
    </properties>
</profile>
...