0

私はついに、アセンブリファイルを使用してMavenに大量のjarファイルを圧縮し、ローカルリポジトリにインストールすることに成功しました。それは十分に困難でした...

今の私の目標は、別のMavenプロジェクトを構成して、「mvn test」を実行すると、そのzipをプルして解凍し、そのzipファイル内のjarからテストを実行するようにすることです。誰かがこれを行う方法を知っていますか?

アセンブリプロジェクトのPOMは次のとおりです。

<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>com.pason</groupId>
<artifactId>RigFocusOnDataHub</artifactId>
<name>RigFocusOnDataHub</name>
<version>12.2.0-SNAPSHOT</version>
<packaging>pom</packaging>

<dependencies>
    ...
</dependencies>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <descriptors>
                    <descriptor>RigFocusOnDH.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>zip</id>
                    <!-- this is used for inheritance merges -->
                    <phase>package</phase>
                    <!-- append to the packaging phase. -->
                    <goals>
                        <goal>single</goal>
                        <!-- goals == mojos -->
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

これが2番目のプロジェクトのPOMです。残念ながら、RigFocusOnDataHubのzipファイルをダウンロードする代わりに、ローカルリポジトリからRigFocusOnDataHubのすべての依存関係のjarファイルをフェッチするだけです。

<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>com.pason</groupId>
<artifactId>RigFocusDHSystemTest</artifactId>
<version>12.2.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>com.pason</groupId>
        <artifactId>MurphyRigFocus</artifactId>
        <version>2.0.0-SNAPSHOT</version>
        <type>test-jar</type>
    </dependency>
    <dependency>
        <groupId>com.pason</groupId>
        <artifactId>RigFocusOnDataHub</artifactId>
        <version>12.2.0-SNAPSHOT</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.pason</groupId>
                                <artifactId>MurphyRigFocus</artifactId>
                                <version>2.0.0-SNAPSHOT</version>
                                <type>test-jar</type>
                                <outputDirectory>${project.build.directory}/tests/MurphyRigFocus</outputDirectory>
                            </artifactItem>
                            <artifactItem>
                                <groupId>com.pason</groupId>
                                <artifactId>RigFocusOnDataHub</artifactId>
                                <version>12.2.0-SNAPSHOT</version>
                                <type>zip</type>
                                <outputDirectory>${project.build.directory}/tests/MurphyRigFocus</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <testClassesDirectory>${project.build.directory}/tests/MurphyRigFocus</testClassesDirectory>
                <reportsDirectory>${project.build.directory}/surefire-reports/MurphyRigFocus</reportsDirectory>
                <includes>
                    <include>**/*IT.*</include>
                </includes>
                <argLine>-Djava.library.path=${basedir}/target/classes/</argLine>
                <forkMode>pertest</forkMode>
            </configuration>
        </plugin>
    </plugins>
</build>

4

1 に答える 1

1

次のことを行う必要があります。

  1. zip から jar を抽出します。これは、maven-dependency-plugin を使用すると簡単です。
  2. 推移的な依存関係をカットして、jar がパスに 2 回入らないようにします。これは、ソースで maven-shade-plugin を使用するか、テスト プロジェクト自体で依存関係を除外して行うことができます。
  3. jarをテストクラスパスに追加します。それには多くの方法があります。最初に確実な構成で追加のパラメーターを使用しようとします
于 2012-05-21T17:23:44.983 に答える