thisisshantzz
thisisshantzz

Reputation: 1097

Is it possible to exclude (or include) classes or resources on a per profile basis in Maven?

I have two maven profiles P1 and P2 and what I want to do is that depending on the profile I use to build my project, certain resources should be excluded.

For example

<profiles>
    <profile>
        <id>P1</id>
        <properties>
            <app.home>Path to project home</app.home>
            <exclude>src/main/java/foo/*.*</exclude> <!-- need to exclude all files in src/main/java/foo in this profile -->
        </properties>
    </profile>
    <profile>
        <id>P2</id>
        <properties>
            <app.home>Path to project home</app.home>
            <exclude>src/main/java/bar/*.*</exclude> <!-- need to exclude all files in src/main/java/bar in this profile-->
        </properties>
    </profile>
</profiles>

So, here what I want to do is to exclude all files in src/main/java/foo/ when I build using the P1 profile and exclude all files in src/main/java/bar when I build using the P2 profile.

Is this possible and if not is there any alternative?

Upvotes: 7

Views: 8290

Answers (2)

Payam Soudachi
Payam Soudachi

Reputation: 489

If you are using spring boot maven plugin, use should do it like this:

  <profiles>
    <profile>
        <id>sample-profile</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>com/example/foo/ToSkip.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </profile>
  </profiles>

Upvotes: 2

wake-0
wake-0

Reputation: 3968

You can add a build with the Maven Compiler Plugin to your profile and add a exclude in there

E.g.

<profile>
    <id>P1</id>
    <properties>
        <app.home>Path to project home</app.home>
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**src/main/java/foo/*.*</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</profile>

See for additional information Maven: excluding java files in compilation

Upvotes: 11

Related Questions