2010-08-06 12 views
5

Vengo dalla prospettiva di Ant, quindi scusami. Mi rendo conto che qui ci sono già alcune domande su come risolvere le dipendenze, ma nessuno di loro sembra dire come fare ciò che è necessario fare.Come copiare le dipendenze in gae war/WEB-INF/lib

Domanda 1: Attualmente, in collaborazione con l'utilizzo di Maven-guerra-plugin, quando ho eseguito la guerra mvn: la guerra, viene creata una cartella guerra in cartella di destinazione.

Tuttavia, vorrei copiare tutti vasetti le dipendenze alla guerra/WEB-INF/lib istituito da google plugin di Eclipse (con Gae abilitato, GWT disabilitato), senza sovrascrivere i vasi che Google plugin di Eclipse messi lì.

Non desidero impostare un file di guerra o una directory di guerra. Ho solo bisogno di copiare/consolidare tutti i gai non-gae con i gae jars in modo che quando il progetto viene eseguito come un'applicazione web gae, Eclipse non si lamenterebbe di ClassNotFoundException.

Domanda 2: Quando si utilizza Ant in Eclipse, è possibile eseguire i target Ant all'interno di Eclipse.

Al momento, devo eseguire comandi mvn da una finestra di shell (che è mutualmente ignara dell'esistenza di una sessione di Eclipse). Sembra che l'unica cosa che viene fatta automaticamente sia quando aggiorno le dipendenze.

C'è un modo o un qualsiasi plugin per eclipse che mi consenta di eseguire gli obiettivi mvn in Eclipse?

Ulteriori informazioni:

mvn dependency:copy-dependencies persiste nella copiatura a target/dependency directory, con il seguente:

<plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>process-resources</phase> 
     <goals> 
      <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>false</overWriteSnapshots> 
      <overWriteIfNewer>true</overWriteIfNewer> 
      <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Ho anche provato a cambiare al percorso assoluto

<outputDirectory> 
    /home/geek/eclipse/workspace/Demo-autoshoppe/holycow 
</outputDirectory> 

Ma holycow directory è ancora vuoto e mvn persiste ancora nella copia su target/dependency directory. La mia soluzione attuale è di collegare il softkey target/dependency come war/WEB-INF/lib, che è un kludge molto pessimo. Perché Maven non è sensibile alle specifiche di outputDirectory? Sto usando Maven 2.2 di Ubuntu.

+0

Nota che m2e - il plugin Eclipse Maven - è diventato molto, molto meglio con Eclipse 3.8. –

risposta

7

Ho la vera risposta per te, mio ​​uomo.

Utilizzare l'ID di esecuzione "default-cli". Assicurati di utilizzare Maven 2.2+. Questo exec-id si applica alle esecuzioni della linea di comando del mojo.

<build> 
    <pluginManagement> 
     <plugins> 
     <!-- Copy dependencies to war/WEB-INF/lib for GAE proj compliance. --> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
      <execution> 
       <id>default-cli</id> 
       <goals> 
       <goal>copy-dependencies</goal> 
       </goals> 
       <configuration> 
       <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory> 
       <overWriteReleases>false</overWriteReleases> 
       <overWriteSnapshots>false</overWriteSnapshots> 
       <overWriteIfNewer>true</overWriteIfNewer> 
       <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 

Cheers.

+0

grazie amico ... questo funziona così ... speso come un giorno per capire questo fuori –

+0

grazie! sarebbe bello copiare solo le dipendenze attive e non quelle filtrate (stesso artefatto se, versione diversa) – ZiglioUK

0

Per quanto riguarda il n. 1: Suggerisco di creare il progetto Maven basato su questo plug-in e archetipo http://code.google.com/p/maven-gae-plugin/ (vedere l'esempio basato su GWT se si sta scrivendo un'app GWT per GAE).

Riguardo al n. 2: controllare il plug-in m2eclipse per l'integrazione completa di maven in eclissi. È stato scritto da Sonatype (i creatori di Maven): http://m2eclipse.sonatype.org/

2

Un socio mi ha inviato questa risposta, che funziona. Attivare il follow-through tramite mvn build o ma non direttamente tramite mvn dependency:copy-dependencies.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>copy-dependencies</id> 
     <phase>package</phase> 
     <goals> 
      <goal>copy-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${basedir}/war/WEB-INF/lib/</outputDirectory> 
      <overWriteReleases>false</overWriteReleases> 
      <overWriteSnapshots>false</overWriteSnapshots> 
      <overWriteIfNewer>true</overWriteIfNewer> 
      <excludeArtifactIds>gwt-user,gwt-dev</excludeArtifactIds> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

Copia ancora ostinatamente i file jar su target/dipendenza. La [altra soluzione di seguito] (http://stackoverflow.com/questions/3421826/how-to-copy-dependencies-to-gae-war-web-inf-lib/3909756#3909756) di Steven Francolla funziona comunque. – nikhil

Problemi correlati