2

さまざまなMavenバージョン(例:2.2.1および3.0.4)に対してテストしたいMavenプラグインがあります。理想的には、ビルドを実行しているユーザーがこれらの正確なバージョンを手動でインストールする必要がないようにします。

Maven Centralまたは他のソースから特定のバージョンのMaven自体をインストールして、後続のビルドのためにローカルのMavenリポジトリにキャッシュすることは可能ですか?

4

3 に答える 3

1

Jenkins / Hudson / TeamCity / などの継続的インテグレーション (CI) サーバーを単純にインストールしてみませんか? CI サーバーを使用すると、さまざまなバージョンの SDK に対してビルドを実行できます。

プラグインが OSS (および GitHub) の場合、Cloudbeesから無料の Jenkins ホスティングを入手できると思います。

Maven Central から Maven 自体をダウンロードすることはできません。彼らのサイトからのみダウンロードできます。

于 2012-06-26T14:40:37.747 に答える
1

以下に示すように、Maven ディストリビューションは Maven セントラル リポジトリに格納されます。

したがって、次の座標を持つ通常の依存関係として使用できます。

tar.gz バリアント:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>apache-maven</artifactId>
    <version>3.0.4</version>
    <classifier>bin</classifier>
    <type>tar.gz</type>
</dependency>

zip バリアント:

<dependency>
    <groupId>org.apache.maven</groupId>
    <artifactId>apache-maven</artifactId>
    <version>3.0.4</version>
    <classifier>bin</classifier>
    <type>zip</type>
</dependency>

残りは非常に標準的です-おそらく統合テストpomで使用し、@khmarbaiseが推奨するようにmaven-invoker-pluginでそれらを呼び出します。

于 2012-11-06T22:48:37.343 に答える
0

次のようなことができます。

   <profile>
      <id>run-its</id>
      <build>
        <!--  Download the different Maven versions -->
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>wagon-maven-plugin</artifactId>
            <version>1.0-beta-3</version>
            <executions>
              <execution>
                <id>download-maven-2.0.11</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>download-single</goal>
                </goals>
                <configuration>
                  <url>http://archive.apache.org/dist/maven/binaries/</url>
                  <fromFile>apache-maven-2.0.11-bin.tar.gz</fromFile>
                  <toDir>${project.build.directory}/maven/download/</toDir>
                </configuration>
              </execution>
              <execution>
                <id>download-maven-2.2.1</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>download-single</goal>
                </goals>
                <configuration>
                  <url>http://archive.apache.org/dist/maven/binaries/</url>
                  <fromFile>apache-maven-2.2.1-bin.tar.gz</fromFile>
                  <toDir>${project.build.directory}/maven/download/</toDir>
                </configuration>
              </execution>
              <execution>
                <id>download-maven-3.0.3</id>
                <phase>prepare-package</phase>
                <goals>
                  <goal>download-single</goal>
                </goals>
                <configuration>
                  <url>http://archive.apache.org/dist/maven/binaries/</url>
                  <fromFile>apache-maven-3.0.3-bin.tar.gz</fromFile>
                  <toDir>${project.build.directory}/maven/download/</toDir>
                </configuration>
              </execution>
            </executions>
          </plugin>


          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>truezip-maven-plugin</artifactId>
            <version>1.0-beta-4</version>
            <executions>
              <execution>
                <id>extract-maven-2.0.11</id>
                <goals>
                  <goal>copy</goal>
                </goals>
                <phase>prepare-package</phase>
                <configuration>
                  <fileset>
                    <directory>${project.build.directory}/maven/download/apache-maven-2.0.11-bin.tar.gz</directory>
                    <outputDirectory>${project.build.directory}/maven/tools/</outputDirectory>
                  </fileset>
                </configuration>
              </execution>
              <execution>
                <id>extract-maven-2.2.1</id>
                <goals>
                  <goal>copy</goal>
                </goals>
                <phase>prepare-package</phase>
                <configuration>
                  <fileset>
                    <directory>${project.build.directory}/maven/download/apache-maven-2.2.1-bin.tar.gz</directory>
                    <outputDirectory>${project.build.directory}/maven/tools/</outputDirectory>
                  </fileset>
                </configuration>
              </execution>
              <execution>
                <id>extract-maven-3.0.3</id>
                <goals>
                  <goal>copy</goal>
                </goals>
                <phase>prepare-package</phase>
                <configuration>
                  <fileset>
                    <directory>${project.build.directory}/maven/download/apache-maven-3.0.3-bin.tar.gz</directory>
                    <outputDirectory>${project.build.directory}/maven/tools/</outputDirectory>
                  </fileset>
                </configuration>
              </execution>
            </executions>
          </plugin>

          <!--
            This is currently needed due to a bug of the truezip-plugin cause it unpacks without permission!
            see http://jira.codehaus.org/browse/MOJO-1796
           -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                  <id>chmod-files</id>
                  <phase>package</phase>
                  <goals>
                    <goal>run</goal>
                  </goals>
                  <configuration>
                    <target>
                      <chmod file="${project.build.directory}/maven/tools/apache-maven-2.0.11/bin/mvn" perm="+x"/>
                      <chmod file="${project.build.directory}/maven/tools/apache-maven-2.2.1/bin/mvn" perm="+x"/>
                      <chmod file="${project.build.directory}/maven/tools/apache-maven-3.0.3/bin/mvn" perm="+x"/>
                    </target>
                  </configuration>
                </execution>
              </executions>
          </plugin>

          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-invoker-plugin</artifactId>
            <version>1.5</version>
            <dependencies>
              <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy</artifactId>
                <version>1.8.4</version>
              </dependency>
            </dependencies>
            <configuration>
              <debug>false</debug>
                  <!-- src/it-ip as for integration tests invoker plugin for the time of transition to maven-invoker-plugin -->
              <projectsDirectory>src/it</projectsDirectory>
              <showVersion>true</showVersion>
              <pomIncludes>
                <pomInclude>*/pom.xml</pomInclude>
              </pomIncludes>
              <preBuildHookScript>setup</preBuildHookScript>
              <postBuildHookScript>verify</postBuildHookScript>
              <settingsFile>src/it/settings.xml</settingsFile>
            </configuration>
            <executions>
              <execution>
                <id>integration-test-maven-2.0.11</id>
                <goals>
                  <goal>install</goal>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <reportsDirectory>${project.build.directory}/invoker-reports-2.0.11</reportsDirectory>
                  <localRepositoryPath>${project.build.directory}/local-repo-2.0.11</localRepositoryPath>
                  <cloneProjectsTo>${project.build.directory}/it-2.0.11</cloneProjectsTo>
                  <mavenHome>${project.build.directory}/maven/tools/apache-maven-2.0.11</mavenHome>
                  <goals>
                    <goal>clean</goal>
                    <goal>test</goal>
                  </goals>
                </configuration>
              </execution>
              <execution>
                <id>integration-test-maven-2.2.1</id>
                <goals>
                  <goal>install</goal>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <reportsDirectory>${project.build.directory}/invoker-reports-2.2.1</reportsDirectory>
                  <localRepositoryPath>${project.build.directory}/local-repo-2.2.1</localRepositoryPath>
                  <cloneProjectsTo>${project.build.directory}/it-2.2.1</cloneProjectsTo>
                  <mavenHome>${project.build.directory}/maven/tools/apache-maven-2.2.1</mavenHome>
                  <goals>
                    <goal>clean</goal>
                    <goal>test</goal>
                  </goals>
                </configuration>
              </execution>
              <execution>
                <id>integration-test-maven-3.0.3</id>
                <goals>
                  <goal>install</goal>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <reportsDirectory>${project.build.directory}/invoker-reports-3.0.3</reportsDirectory>
                  <localRepositoryPath>${project.build.directory}/local-repo-3.0.3</localRepositoryPath>
                  <cloneProjectsTo>${project.build.directory}/it-3.0.3</cloneProjectsTo>
                  <mavenHome>${project.build.directory}/maven/tools/apache-maven-3.0.3</mavenHome>
                  <goals>
                    <goal>clean</goal>
                    <goal>test</goal>
                  </goals>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

これにより、異なるMavenバージョンがダウンロードされ、.tar.gzアーカイブが解凍され、mvnが実行可能になり、maven-invoker-pluginを使用して、これらの異なるMavenバージョンですべての統合テストが実行されます。

しかし、私はそれをお勧めすることはできません。より良い方法は、Mavenのさまざまなインストールを含むCIソリューション(すでに述べたように)を使用することです。Mavenのバージョンごとに個別に統合テストを実行できます。

于 2012-06-26T19:10:33.793 に答える