Domanda

Ho un file POM maven per un servizio web. Per una delle dipendenze devo specificare diverse esclusioni per i file jar che sono già mantenuti a un livello superiore nel server delle applicazioni Web (accessibile a tutte le applicazioni Web, non solo a questa particolare). Un esempio di tale esclusione è il JAR contenente il mio driver JDBC.

Esempio (con dettagli di fantasia):

<dependency>
    <groupId>mygroup</groupId>
     <artifactId>myartifact</artifactId>
     <version>1.0.0</version>
     <exclusions>
         <!--The jdbc driver causes hot-deployment issues-->
         <exclusion>
             <groupId>db.drivers</groupId>
             <artifactId>jdbc</artifactId>
         </exclusion>
     </exclusions>
 </dependency>

Il problema che sto riscontrando è che ho bisogno del driver JDBC per i miei test. I miei test attualmente falliscono poiché non possono caricare il driver JDBC.

Come posso configurare il POM in modo che le parti escluse siano accessibili ai miei test, ma non vengano incluse nel mio file WAR?

Aggiornamento: non posso apportare modifiche al POM per mygroup.myartifact poiché dipende da molti altri progetti e questo requisito di esclusione è unico per il mio progetto.

Aggiornamento 2: Sembra che abbia fatto un pessimo lavoro nel formulare questa domanda. La soluzione di Lars di seguito è perfetta per un'esclusione (come mostra l'esempio), tuttavia nel mio scenario reale ho più esclusioni e l'aggiunta di dipendenze aggiuntive per ciascuna sembra maleodorante. La soluzione che sembra funzionare è impostare l'ambito della dipendenza mostrata su compila e quindi creare una seconda dipendenza lo stesso artefatto (mygroup.myartifact) senza esclusioni e l'ambito impostato su test . Dal momento che entrambi Lars hanno risposto correttamente alla mia domanda mal formulata, oltre a portarmi nella direzione della soluzione effettiva, segnerò la sua risposta come risposta.

È stato utile?

Soluzione

Utilizza il " scope " tag all'interno della tua dipendenza.

<scope>test</scope>

http://maven.apache.org/pom.html#Dependencies

modifica: se capisco correttamente la tua configurazione, l'ambito = test che devi aggiungere dovrebbe essere aggiunto nel POM mygroup.myartifact. In questo modo puoi testare quel manufatto con il jdbc jar incluso, ma sempre quando altri POM vogliono includere mygroup.myartifact, non ottengono jdbc incluso come dipendenza transitiva.

seconda modifica: ok, se non controlli il POM che vuoi includere - fai un'esclusione come hai già fatto, quindi aggiungi jdbc come nuova dipendenza, con scope = test.

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