2013-07-29 13 views
30

Mam folder źródeł java, które chcę wykluczyć z kompilacji.Maven: wyłączenie plików java w kompilacji

Mój folder znajduje się pod qa/apitests/src/main/java/api/test/omi.

Dodałem następujący wpis w pom.xml pod qa/bamtests, ale to nie pomogło. Czy jest jeszcze zgłoszenie, które muszę zrobić?

<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

lokalizacja dla właściwości jest 'src/main/resources' przypadku właściwości testowych' src/test/resources'. – khmarbaise

+0

W jaki sposób Twój projekt w 'qa/bamtests' znajduje źródła w' qa/apitests'? –

+0

co z użyciem tego samego wzorca dla wykluczeń: **/test/omi/** boskop

Odpowiedz

39

Użyj 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

Co oznaczają dwa wiodące '*'? –

+2

"**" oznacza "dowolne katalogi". –

+2

Ta odpowiedź nie działa dla mnie. Spójrz na to http://stackoverflow.com/a/19713000/358013 – blueskin

2

Jeśli chcesz wykluczyć źródła Java z kompilacji, a następnie wymienić je w definicji 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> 

Zasoby plugin tylko definiuje wszystkie zasoby, które połączą w swojej ostatecznej artefaktu.

33

dodanie wykluczyć jako pozostałe odpowiedzi zasugerował pracował dla mnie, oprócz ścieżki nie powinna obejmować „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

usunąć src/main/jest tak prawdziwe! – Dudi

11

Dla każdego, kto potrzebuje, aby wykluczyć źródeł testowych<exclude> tag nie działa. Trzeba użyć <testExclude> zamiast:

<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

Górny głosowało odpowiedź działa dobrze, ale nie pozwala na wymuszenie wyłączenia gdy wykluczone klasa/klasy jest/są wykorzystywane przez nie-wykluczonych nich.

Obejście użyciu 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> 
Powiązane problemy