tags:

views:

76

answers:

2

hi,

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 markes 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

+1  A: 

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.

romaintaz
thanks for the quick reply; this is what a trief first (few days ago) but then it gave me build errors. I tried it again and now it seems to work fine so apparently the errors had a different cause.
TheStijn
+1  A: 

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>
Péter Török
Péter, aslo thanks for your quick reply.
TheStijn