2011-01-14 24 views
6

Attualmente sto migrando il nostro processo di costruzione da Eclipse/Ant a Maven/M2Eclipse/Artifactory. Ho una webapp come progetto WTP in Eclipse. L'ho migrato a Maven con m2eclipse.Impostazione dipendenze librerie Tomcat in Maven POM

La compilazione funziona correttamente con l'IDE di Eclipse.

Tuttavia, quando provo a compilare da Maven CLI (mvn clean & mvn compile), Maven lamenta di non trovare le librerie fornite dal Tomcat Ambiente (come annotazioni-api, servlet-api, ecc, ...) .

Abbastanza corretto: in effetti, queste dipendenze sono fornite da WTP, come Java resources/Libraries/ApacheTomcat6. Maven non ne è a conoscenza.

Potrei disattivare questo nel percorso di generazione e aggiungere ogni dipendenza corrispondente nel mio POM, ma temo che questo porterebbe Maven a distribuirli di nuovo nella mia webapp (WEB-INF/libs).

Quindi, qual è il modo migliore per dire a Maven "questa applicazione verrà eseguita in un ambiente ben noto, fornendo le seguenti librerie". C'è un TomCat POM comune che potrei aggiungere come dipendenza?

Grazie in anticipo per il vostro consiglio. saluti,

Raphael

risposta

11

Un modo per gestirle è di dichiarare queste dipendenze con portata provided. Queste dipendenze saranno disponibili per la compilazione e il test, ma non verranno inserite da Maven nella webapp. Ad esempio,

 <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.0</version> 
      <scope>provided</scope> 
     </dependency> 
+1

Sopra è il modo in cui è necessario definire nel tuo pom. cambia l'ambito su fornito in modo che Maven non includa quei vasi nella tua build finale. – fmucar

+1

Grazie, Sai se Tomcat fornisce un progetto POM con tutte le librerie già elencate come "fornite"? Potrei quindi aggiungerlo come dipendenza. –

+0

@RaphaelJolivet che sarebbe bello, anche in cerca di questo (ma per Glassfish, in realtà). Hai trovato qualcosa? –

Problemi correlati