2012-03-05 8 views
5

Ho un'applicazione Web che si basa su diversi moduli. Quindi, per costruirlo, ho un master pom.xml. Quello che voglio questo file pom è fare il check out di tutti i moduli. di seguito è il mio file pom.Come utilizzare il file master pom per eseguire il checkout di tutti i moduli di un'applicazione Web e creare tutti i moduli

 <executions> 
     <execution> 
        <id>check-out-project1</id> 
        <phase>generate-sources</phase> 
        <goals> 
        <goal>checkout</goal> 
        </goals> 
        <configuration>  
        <checkoutDirectory>${project.build.directory}/module1</checkoutDirectory> 
        <connectionUrl>scm:svn:svn://svnserver/svn/module1/trunk</connectionUrl> 
        <!--<developerConnection>scm:svn:svn://svnserver/svn/module1/trunk</developerConnection>!--> 
        <username>username</username>        
        <password>password</password>    
        </configuration> 
     </execution> 

      <execution> 
        <id>check-out-project2</id> 
        <phase>generate-sources</phase> 
        <goals> 
        <goal>checkout</goal> 
        </goals> 
        <configuration>  
        <checkoutDirectory>${project.build.directory}/module1</checkoutDirectory> 
        <connectionUrl>scm:svn:svn://svnserver/svn/module1/trunk</connectionUrl> 
          <username>username</username>        
          <password>password</password>    
        </configuration> 
      </execution> 
     </executions> 

ho cercato mvn scm: checkout e mvn scm: checkout -check-out-project1 ma mi darà l'errore: comando di checkout Impossibile eseguire: Impossibile caricare il provider scm . È necessario definire un parametro connectionUrl.

non capisco perché questo sta accadendo da quando ho i parametri connectionURL definiti all'interno del file pom già, le idee punto che voglio raggiungere è avere il file pom configurato per essere in grado di checkout più progetti lo stesso tempo. Per favore fatemi sapere cosa sto facendo male qui, Grazie in anticipo.

+0

Hai un repository di esperti per pubblicare i tuoi artefatti? Penso che dovresti provare ad avere i moduli di dipendenza pre-compilati (e testati) prima di usarli nell'assemblea principale. Anche se stai usando il tuo repository locale ~/.m2. Questo dovrebbe consentire di usare il plugin maven-dependency e scaricare direttamente le risorse compilate e testate (presumendo che tu abbia dei test). – hovanessyan

risposta

2

ho affrontato alla stessa situazione e ho trovato una soluzione -utilizzando il tuo codice: D- che funziona sul mio computer:

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.xxx.internet</groupId> 
    <artifactId>my-app</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Maven Quick Start Archetype</name> 
    <url>http://www.mySite.de</url> 
    <scm> 
     <connection>scm:svn:http://svn-repo-adress:8080/repo/myDirectory</connection> 
     <developerConnection>http://svn-repo-adress:8080/repo/myDirectory</developerConnection> 
     <tag>HEAD</tag> 
     <url>http://svn-repo-adress:8080/repo/myDirectory</url> 
    </scm> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-scm-plugin</artifactId> 
       <version>1.6</version> 
       <configuration> 
       <goals>checkout</goals> 
       <checkoutDirectory>target/checkout</checkoutDirectory> 
       <username>username</username> 
       <password>userpassword</password> 
       </configuration> 
       <executions> 
       <execution> 
        <id>check-out-project1</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>checkout</goal> 
        </goals> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Dopo aver eseguito "mvn scm: cassa" sulla console cmd ha funzionato .

Penso che il punto importante fosse aggiungere prima il tag scm, prima di eseguire il tag build.

2

Ho scoperto che se si posizionano ciascuno dei checkout nel proprio <execution> ... </execution> e al loro posto l'individuo <configuration> ... </configuration> funziona. Ad esempio:

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin</artifactId> 
      <version>1.9.4</version> 
      <executions> 
       <execution> 
        <id>repo1-dependency</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <connectionUrl>${my.repo1.url}</connectionUrl> 
         <scmVersion>${my.repo1.branch}</scmVersion> 
         <scmVersionType>branch</scmVersionType> 
         <checkoutDirectory>${project.build.directory}/${my.repo1}-${my.repo1.branch}</checkoutDirectory> 
        </configuration> 
        <goals> 
         <goal>checkout</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>repo2-dependency</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <connectionUrl>${my.repo2.url}</connectionUrl> 
         <scmVersion>${my.repo2.branch}</scmVersion> 
         <scmVersionType>branch</scmVersionType> 
         <checkoutDirectory>${project.build.directory}/${my.repo2}-${my.repo2.branch}</checkoutDirectory> 
        </configuration> 
        <goals> 
         <goal>checkout</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
+0

Puoi pubblicare il tuo file pom completo come ho provato e ottengo solo 1 esecuzione e utilizza le informazioni del tag scm, non la connectionUrl dalla configurazione. – mario

Problemi correlati