2011-01-28 15 views
9

Attualmente sto utilizzando IBM Rational Application Development (distro IBM Eclipse) per lo sviluppo di Portlet e un piccolo problema con l'integrazione di Maven.Maven per copiare JAR quando si aggiungono dipendenze

Ecco la situazione:

1) IBM RAD ha la capacità di distribuire un portlet direttamente dall'interno di sé (RUN/DEBUG)

In questo caso, non sto usando Maven generato GUERRA affatto poiché IBM RAD sembra creare autonomamente la WAR e inviarla a IBM WebSphere Portal. Non è un grosso problema finora.

2) Maven dipendenze non vengono copiati WebContent/WEB-INF/lib

IBM ha una propria struttura di directory: WebContent/WEB-INF e WebContent/META-INF. Se ho aggiornato pom.xml per includere nuove dipendenze, quei JARS non verranno copiati nella directory WebContent/WEB-INF/lib, quindi, quando volevo ESEGUIRE/DEBUG il portlet, tali librerie non saranno incluse.

Domanda:

C'è un modo per copiare le nuove JAR automaticamente alla cartella WEB-INF WebContent// lib non appena aggiorno il pom.xml? (se sì, quale ciclo di vita dovrebbe essere?)

Se non c'è una soluzione perfetta per la domanda n. 1, non mi importa se questo passaggio è incluso nella compilazione/obiettivo "mvn install".

Preferisco non utilizzare l'attività ant, ma invece è l'utilità di copia personale.

Se qualcuno ha suggerimenti su come integrare Maven e IBM RAD per lo sviluppo del portlet WebSphere, sentitevi liberi di aggiungere altre risposte.

Grazie

+0

Non sono sicuro che funzioni per IBM RAD ma con Eclipse WTP è possibile definire i pezzi dell'assieme di distribuzione dalle proprietà del progetto. –

risposta

2

Ecco un Maven 2 pom.xml scheletro ho scelto di un vecchio progetto RAD:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo</groupId> 
    <artifactId>fooproject</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <properties> 
    <project.build.sourceEncoding>US-ASCII</project.build.sourceEncoding> 
    </properties> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <finalName>${project.artifactId}-${project.version}</finalName> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <includes><include>**/*.properties</include></includes> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.1</version> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.1-beta-1</version> 
     <configuration> 
      <webappDirectory>${project.basedir}/WebContent</webappDirectory> 
      <warSourceDirectory>${project.basedir}/WebContent</warSourceDirectory> 
      <webXml>${project.basedir}/WebContent/WEB-INF/web.xml</webXml> 
      <packagingIncludes>**/*.properties,**/*.jsp,**/*.jar,**/*.class,theme/**/*,images/**/*,**/*.xml,**/*.swf,**/*.tld,**/*.txt</packagingIncludes> 
      <archive> 
      <manifest> 
       <addClasspath>true</addClasspath> 
      </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <!-- compile classpath --> 
    </dependencies> 
</project> 

Questo è stato applicato alla struttura di directory come creato da RAD (versione 7.5, targeting Portal 6.5.x su WAS 7). Questo non è l'unico modo per farlo e sono sicuro che il pom potrebbe essere migliorato, ma è servito al suo scopo. Aggiungi le tue dipendenze come appropriato.

+0

Grazie mille. Funziona come un fascino. – xandross

1

Ho avuto la stessa domanda e problemi con Maven e RAD. Sto usando RAD 8 con M2E e cercando di distribuire automaticamente i portlet/debug per WebSphere Portal 7.

In primo luogo, per quanto riguarda il commento di Gorkem:

Non sono sicuro se questo funziona per IBM RAD, ma con il WTP Eclipse è possibile definire i pezzi dell'assieme di distribuzione dalle proprietà del progetto.

Questo funziona in RAD. Ho configurato l'assembly di distribuzione del mio progetto in modo che corrisponda alla struttura di costruzione di WebSphere e trasferisca le mie dipendenze Maven nella cartella WEB-INF \ lib (Progetto -> Proprietà -> Deployment Assembly -> Aggiungi -> Java Build Path Entries -> Maven Dipendenze).

enter image description here

Questa configurazione mi ha permesso di costruire la guerra con successo e posso esportare il file EAR generato da RAD e manualmente distribuirlo al mio server locale e funziona benissimo. Tuttavia, le opzioni di distribuzione automatica e "Esegui sul server" non funzionano con questo solo. Per qualche ragione implementerà tutte le dipendenze transitive (portlet-api, servlet-appi, ecc.) Su WebSphere che causa conflitti ed esplosioni.

Pertanto, ho provato la soluzione pom proposta da McDowell con un successo limitato: non avrebbe compilato né eseguito correttamente i miei test, anche se quando ho rimosso i test è stato distribuito correttamente da RAD. Sto lavorando al suo pompaggio per includere i test e pubblicherò i miei risultati qui quando lo farò funzionare.

Ho trovato anche this thread che contiene un collegamento a un 2010 IBM document sul modo "ufficiale" di integrare Maven e RAD. Ci sto lavorando e vedrò quale soluzione soddisfa meglio le mie esigenze. Ancora una volta, se/quando avrò lavoro pubblicherò maggiori informazioni qui.


Aggiornamento 11/21/2011

IBM ha prodotto un documento aggiornato per l'integrazione Maven/RAD. Lo puoi trovare here. L'ho vissuto ed è abbastanza ben fatto. È passo dopo passo con screenshot e un po 'di background su Maven, M2eclipse e WTP. Ci sono ancora un paio di fastidi che Chuck descrive nel documento, ma alla fine ha permesso al nostro team di iniziare a utilizzare Maven in un ambiente di WebSphere Portal senza abbandonare le convenzioni Maven. Speriamo che gli altri lo trovino utile.

Problemi correlati