开发者

Maven: use common/shared plugins when working with multiple profiles

开发者 https://www.devze.com 2022-12-20 18:11 出处:网络
I have a project that is using several profiles. Each profile uses following plugins: maven-compiler-plugin

I have a project that is using several profiles. Each profile uses following plugins:

  • maven-compiler-plugin
  • maven-resources-plugin
  • maven-antrun-plugin
  • maven-surefire-plugin
  • maven-war-plugin

The one marked in bold is however the only plugin where there is a difference between the profiles (different configuration files will be copied using the antrun plugin). The 4 other plugins are configured exactly the same for all profiles.

The question is now: is there some way to include these common plugins开发者_开发问答 only once but still use them for all the profiles by default?

Something like:

<shared><plugin1><plugin2>...</shared>

<profile><plugin3></profile>

<profile><plugin3></profile>

...

thanks,

Stijn


If a plugin is used by all profile, simply define it in the <build> part :

<project>
...
    <build>
        <plugins>
             Your shared plugins go here...
        </plugins>

    <profiles>
        Definition of profiles...
    </profiles>
</project>

This way, you will only define the antrun plugin in the profiles block.


Just include the common plugins in your build section:

<build>
    <plugins>
        <plugin>
            <groupId>...</groupId>
            <artifactId>plugin1</artifactId>
        </plugin>
        ...
    </plugins>
</build>

Then add the specific plugin in your profile:

<profiles>
    <profile>
        <id>...</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin3</artifactId>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

You can also configure the same plugin differently in different profiles this way:

<profiles>
    <profile>
        <id>profile1</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin1</artifactId>
                    <configuration>
                        <setting>value1</setting>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>profile2</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>...</groupId>
                    <artifactId>plugin1</artifactId>
                    <configuration>
                        <setting>value2</setting>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>
0

精彩评论

暂无评论...
验证码 换一张
取 消