2013-07-29 18 views
30

Ho una cartella di sorgenti java che desidero escludere dalla compilation.Maven: esclusi i file java nella compilazione

La mia cartella è sotto qa/apitests/src/main/java/api/test/omi.

Ho aggiunto la seguente voce nello pom.xml in qa/bamtests ma non è stato di aiuto. C'è una voce in più che devo fare?

<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> 
+0

posizione per le proprietà è 'src/main/resources' oggetti di test' src/test/resources'. – khmarbaise

+0

In che modo il tuo progetto in 'qa/bamtests' trova anche le fonti in' qa/apitests'? –

+0

e non usare lo stesso modello per escludere: **/test/omi/** boskop

risposta

39

Utilizzare 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> 
+0

Cosa significano i due principali '*'? –

+2

"**" significa "qualsiasi directory". –

+2

Questa risposta non ha funzionato per me. Guarda questo http://stackoverflow.com/a/19713000/358013 – blueskin

2

Se si desidera escludere i sorgenti Java da compilare, poi ne parlano nella definizione Maven Compiler Plugin

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

Le risorse plug solo definisce ciò che tutte le risorse per raccogliere i nel manufatto finale.

33

Aggiunta di escludere le altre risposte suggerite lavorato per me, se il percorso non dovrebbe includere "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> 
+0

rimuovere src/main/è così vero! – Dudi

11

Per chiunque abbia bisogno di escludere fonti di prova<exclude> tag non funziona. È necessario utilizzare invece <testExclude>:

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

La parte superiore ha votato risposta funziona bene, ma non permette forzare l'esclusione Quando la classe/classi escluse è/sono utilizzati da quelli non-esclusi.

Soluzione utilizzando 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> 
Problemi correlati