Condividi le risorse di test tra i progetti di maven

Esiste una soluzione chiara per condividere il codice di test comune tra i progetti di maven usando l’objective test-jar del maven-jar-plugin plugin (vedi qui ).

Ho bisogno di fare la stessa cosa con le risorse di test, in particolare, voglio che le risorse di test del progetto A siano disponibili nel classpath del progetto B durante i test.

Per il progetto A è necessario dichiarare:

   org.apache.maven.plugins maven-antrun-plugin   package  run             org.codehaus.mojo build-helper-maven-plugin   package  attach-artifact     ${project.build.directory}/test-resources.jar jar test-resources       

E nel progetto B sarà normale dipendenza:

  myproject.groupId myartifact 1.0-SNAPSHOT test-resources test  

Domanda: dovrebbe funzionare in tutti i casi? È ansible impacchettare le risorse senza il maven-antrun-plugin (usando più plugin ‘leggero’)?

Basta usare jar:test-jar e dichiarare il JAR risultante come una dipendenza (fare riferimento a questa guida per maggiori dettagli). E anche se non capisco il problema di avere risorse e classi in questo jar, puoi sempre escludere tutti i file .class :

     org.apache.maven.plugins maven-jar-plugin 2.2    test-jar      **/*.class       

E per usarlo:

  ...   com.myco.app foo 1.0-SNAPSHOT test-jar test   ...  

C’è già un objective per build un barattolo di prova da parte di Maven.

Supponendo che tu abbia bisogno di qualcosa di un po ‘più flessibile, puoi usare il plugin jar per impacchettare le tue risorse di prova ed eseguire quell’objective con l’objective del pacchetto principale con qualcosa di simile.

   org.apache.maven.plugins maven-jar-plugin   package  jar   test-resources  **/*.whatever-you-want      

Qualsiasi cosa tu desideri in bundle verrà aggiunta a project-name-version-test-resources.jar quando viene eseguito l’objective jar.

Potresti quindi includerlo in un progetto tramite la stessa dipendenza che usi sopra.