constantlearner
constantlearner

Reputation: 5247

Maven: excluding java files in compilation

I have a folder of java sources which I wish to exclude from the compilation.

My folder is under qa/apitests/src/main/java/api/test/omi.

I added the following entry in the pom.xml under qa/bamtests but it didn't help. Is there an entry in addition I need to make?

       <build>
         <resources>
           <resource>
             <directory>src/main/java</directory>
             <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
               <include>**/*.xsd</include>
               <include>**/*.csv</include>
             </includes>
             <excludes>
               <exclude>src/main/java/api/test/omi</exclude>
             </excludes>
           </resource>
        </build>

Upvotes: 65

Views: 115966

Answers (6)

robertomessabrasil
robertomessabrasil

Reputation: 11

If you're interested in compiling just a folder, you can just include it and maven in ignore the rest but you include dependencies

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <release>${maven.compiler.release}</release>
        <includes>
            <include>org/clusterj/accountmanager/api/servlet/account/register/createaccount/**</include>
        </includes>
   </configuration>
</plugin>

Upvotes: 0

user1907906
user1907906

Reputation:

Use the Maven Compiler Plugin.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <excludes>
      <exclude>**/api/test/omi/*.java</exclude>
    </excludes>
  </configuration>
</plugin>

Upvotes: 81

satoshi
satoshi

Reputation: 4113

The top voted answer works fine but it doesn't allow forcing the exclusion when the excluded class/classes is/are being used by not-excluded ones.

Workaround using maven-antrun-plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>process-classes</phase>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <tasks>
            <delete dir="target/classes/folder/to/exclude"/>
        </tasks>
    </configuration>
</plugin>

Upvotes: 3

Michal Kordas
Michal Kordas

Reputation: 10925

For anyone needing to exclude test sources <exclude> tag will not work. You need to use <testExclude> instead:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
      <testExcludes>
        <testExclude>**/PrefixToExclude*</testExclude>
      </testExcludes>
    </configuration>
  </plugin>

Upvotes: 39

Stefan
Stefan

Reputation: 1268

Adding an exclude as the other answers suggested worked for me, except the path shouldn't include "src/main/java":

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <configuration>
        <excludes>
          <exclude>com/filosync/store/StoreMain.java</exclude>
        </excludes>
      </configuration>
    </plugin>
  </plugins>
</build>

Upvotes: 50

Arpit
Arpit

Reputation: 6260

If you want to exclude the java sources from compiling, then mention them in the Maven Compiler Plugin definition

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
            <excludes>
              <exclude>src/main/java/api/test/omi/*.java</exclude>
            </excludes>
        </configuration>
    </plugin>
</plugins>

The resources plugin only defines what all resources to bundle in your final artifact.

Upvotes: 2

Related Questions