2014-04-25 8 views
6

Attualmente sto lavorando su un progetto esistente, che dispone di un file pom.xml con il seguente:Come copiare la risorsa nella directory di destinazione di src con Maven?

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
     </includes> 
    </resource> 
</resources> 

ho nel percorso di base una directory chiamata proprietà che contiene i file di proprietà. Voglio copiare quando impacchetta tutti i file delle proprietà che contiene sotto properties/nella mia directory src (altrimenti il ​​programma si bloccherà a causa di file di configurazione mancanti).

Quindi la mia domanda è:

come posso, con Maven includere file di risorse che non si trovano nella directory src?

provo questo uno ma non sembra funzionare:

<resources> 
    <resource> 
     <filtering>false</filtering> 
     <directory>src</directory> 
     <includes> 
      <include>**/*.properties</include> 
      <include>../properties/**</include> 
     </includes> 
    </resource> 
</resources> 

Grazie del vostro aiuto.

risposta

13

Se la struttura del file è come questo: Standard Directory Layout

enter image description here

Allora non dovete aggiungere l'elemt risorse. copie Maven di default tutti i file e le cartelle che si trovano nella cartella/src/main/resources nella cartella di build e li individua nella root dei file del percorso di classe compilati.
se avete per esempio un file chiamato configuration.properties trovano in /src/main/resources/configuration.properties poi quando si esegue mvn clean compile questo file verrà copiato sul /target/classes/configuration.properties Quindi, se si rimuove questa parte saranno collocati i file in cui u vuole li

<resource> 
    <filtering>false</filtering> 
    <directory>src</directory> 
    <includes> 
     <include>**/*.properties</include> 
    </includes> 
</resource> 
+0

grazie per aver risposto che veloce, il problema è che il progetto è piuttosto vecchio (precedente a Maven) quindi non segue il layout di directory standard di Maven. La tua risposta è stata molto utile, ho appena dovuto aggiungere la mia directory di proprietà come directory delle risorse. – stankoua

+0

No. La cosa migliore è cambiare la struttura delle cartelle e seguire le convenzioni che semplificano la vita. – khmarbaise

+0

Contento di aver potuto aiutare. Come khmarbaise ti semplifica la vita seguire la convetion standard. Rende la vita più facile per te e per tutti gli altri che usano questo progetto :) – zpontikas

6

Migrando i progetti da ant a maven senza modificare la struttura del progetto, impostare sourceDirectory testSourceDirectory nel build e utilizzare il plugin maven-resource come segue, facendo attenzione quando si eseguono gli obiettivi.

 <plugin> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.6</version> 
      <executions> 
       <execution> 
        <id>copy-resources01</id> 
        <phase>process-classes</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/target/classes</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/src</directory> 
           <includes> 
            <include>**/*.properties</include> 
           </includes> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
       <execution> 
        <id>copy-resources02</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>copy-resources</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${basedir}/build/lib</outputDirectory> 
         <encoding>UTF-8</encoding> 
         <resources> 
          <resource> 
           <directory>${basedir}/target/</directory> 
           <include>*.jar</include> 
          </resource> 
         </resources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
+0

Thx per rispondere, vorrei provare se zpontikas non mi avesse dato una soluzione. – stankoua

+1

quindi cosa sta succedendo qui: 1. Esecuzione con id copy resources01 copia tutti i file * .property che trovano nella copia $ {basedir}/src nella directory $ {basedir}/target/classes nello stesso pacchetto come in lo src sono. 2. l'esecuzione con l'id copy resources02 metterà il risultato *.file jar in $ {basedir}/build/lib, questo era il luogo in cui il progetto ant formava già il risultato precedente. Conosco un po 'duro, finalmente devi cancellare con il comando mvn clean the build/lib. Comando: mvn installa l'uso – aberes