Domanda

di Maven Surefire (testing) Plugin mvn test-compile copia i file in src/test/resources a target/test-classes. Compila .java in src/test/java, e copia i file .class compilati target/test-classes.

Ma non copia le risorse da src/test/java, ed è più conveniente per essere in grado di mettere le risorse di prova nella stessa directory delle classi .java che sono le risorse per, che in una gerarchia parallela in src/test/resources.

E 'possibile ottenere Maven per copiare le risorse da src/test/java?

È stato utile?

Soluzione

La copia risorsa è tutto fatto dalla Maven-resource-plugin, e se leggete il doc di esso si vedrà come aggiungere la copia delle risorse da src / test / java.

http://maven.apache.org/plugins/maven-resources- plugin / testResources-mojo.html per l'obiettivo del test-risorse, che è incluso nel ciclo di vita di default.

E poi vedere http://maven.apache.org/pom.html , e il look per <testResources>.

Altri suggerimenti

bmargulies ha dato la risposta , ma mi permetta di riempire alcuni dettagli.

<testresources> può essere aggiunto al nodo <build> delle POM del progetto, in questo modo:

 <testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
 </testResources>

che copia tutto in src/test/java - compreso il codice sorgente .java, che non vogliamo.

anche (come bmargulies solo accennati) le sostituzioni e sostituisce l'impostazione predefinita <testResources> nel POM genitore standard che tutti gli altri POM ereditare da (a meno che l'eredità è cambiato). La copia genitore di serie src/test/resources, in modo da esigenze imperative che, non otteniamo che copiato come al solito, che non vogliamo. (In particolare, tutto il mio motivo per fare questo è quello di utilizzare unitils, che vuole il file copiato unitils.properties -. E questo è (per me, comunque) in src/test/resources

Quindi, abbiamo ri-add src/test/resources:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

Che copie nell'ordine indicato, in modo che per i file che esistono in entrambi /src/test/java (e le sottodirectory) e in /src/test/resources (e sottodirectory), la versione src/test/resources è quella che finisce in test-classes.

Ora abbiamo solo bisogno di non copiare i file .java:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>

L'unico modo che ha funzionato per me quando ho messo la mia configurazione di prova nella cartella src/test/resources (analogo src/test/java per i file di origine). I file di questa cartella vengono copiati nella cartella target/test-classes che si trova sul percorso di classe durante l'esecuzione test. Non so perché, ma la prossima config non ha funzionato per me:

<testResources>
  <testResource>
    <directory>${project.basedir}/src/test/java</directory>
    <excludes>
        <exclude>**/*.java</exclude>
    </excludes>
  </testResource>
  <testResource>
    <directory>${project.basedir}/src/test/resources</directory>
  </testResource>
</testResources>
  

E 'possibile ottenere Maven per copia   risorse da src / test / java?

Sì, questo è facilmente ottenibile con la antrun plug .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top