2012-03-05 9 views
5

私はいくつかのモジュールに依存するWebアプリケーションを持っています。だから、それを構築するために、私はマスターのpom.xmlファイルを持っています。私がこのpomファイルにしたいのは、すべてのモジュールをチェックアウトすることです。下の は私のpomファイルです。マスターpomファイルを使用してWebアプリケーションのすべてのモジュールをチェックアウトしてすべてのモジュールを構築する方法

 <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> 

私はMVNのSCM試してみました:チェックアウトMVNのSCM:チェックアウト-checkアウト-project1にをしかし、それは私にエラーを与える: はcheckoutコマンドを実行できません:SCMプロバイダーを読み込むことができません。 connectionUrlパラメータを定義する必要があります。

私はconnectionUrlパラメータがpomファイル内で既に定義されているので、なぜこれが起こっているのか分かりません。私が取得したいアイデアポイントは、複数のプロジェクトをチェックアウトできるように設定されています。同じ時間。私がここで間違っていることを教えてください、ありがとうございました。

+0

アーティファクトを公開するMavenリポジトリはありますか?私はあなたのメインアセンブリでそれらを使用する前に、依存モジュールを事前ビルド(そしてテスト済み)しておくべきだと思います。たとえローカル〜/ .m2リポジトリを使っていても。これにより、maven-dependency-pluginを使用して、直接コンパイルしてテストした成果物をダウンロードすることができます(テストがあると仮定します)。 – hovanessyan

答えて

2

私は同じような状況に直面し、私はあなたのコードを-using解決策を見つけた:私は「MVNのSCM:チェックアウト」を実行

<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> 

後:私のコンピュータ上で動作D- CMDコンソール上で、それは仕事をしました。

ビルドタグを実行する前に、まずscmタグを追加することが重要だったと思います。

2

チェックアウトのそれぞれを自分自身のに置き、その場所内に個々の<configuration> ... </configuration>が動作することが判明しました。例:

<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

私は試してみたところであなたの完全なPOMファイルを投稿できますか?1回だけ実行され、設定からのconnectionUrlではなくscmタグ情報が使用されます。 – mario