2

私の状況は次のとおりです。

  • libsのディレクトリをスキャンするプロジェクトがあります。
  • このプロジェクトは他のプロジェクト(jar)とは依存していませんが、これにより、ディレクトリからクラスローダーに動的にロードされます(一種のプラグインアーキテクチャです)。
  • 両方のプロジェクトはpomプロジェクトの下にあります

pomsの例:

<groupId>mygroup</groupId>
<artifactId>myparent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
...

「プラグイン」

<parent>
    <artifactId>myparent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0</version>
</parent>

<groupId>mygroup</groupId>
<artifactId>myplugin</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
...

「ローダー」

<parent>
    <artifactId>myparent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0</version>
</parent>

<groupId>mygroup</groupId>
<artifactId>myloader</artifactId>
<packaging>war</packaging>
<version>1.0</version>
...

次に、jar 「プラグイン」を生成し、ビルド時にプロジェクト「ローダー」の定義済みディレクトリにコピーする必要があります。

これはEclipseでローカルに機能する必要があり、jenkinsでは自動的にビルドされます。

誰かが私がこれをどのように行うことができるか考えていますか?

4

2 に答える 2

2

基本的に、4つのステップで解決しました。

  1. 「plugin」プロジェクトでプラグイン「maven-assembly-plugin」を構成して、プロジェクト「loader」内の相対パスにjarをコピーします。
  2. この構成では、 jar-with-dependenciesでプロパティ「descriptorRef」を指定します。これは、必要なライブラリをjarにパックするのに役立ちます。
  3. 「プラグイン」プロジェクトでプラグイン「maven-copy-plugin」を構成して、プロジェクト「ローダー」内の同じ相対パスにプロパティをコピーします

私の「プラグイン」プロジェクトのpom.xmlは次のようになります。

<plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <outputDirectory>${my.output.directory}</outputDirectory>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>     
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.goldin.plugins</groupId>
            <artifactId>maven-copy-plugin</artifactId>
            <version>0.2.3.6</version>
            <executions>
                <execution>
                    <id>create-archive</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <!-- Copy config properties -->
                            <resource>
                                <targetPath>${my.output.directory}</targetPath>
                                <directory>${project.basedir}/conf</directory>
                                <includes>
                                    <include>*.properties</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

一方、ディレクトリ${my.output.directory}からプラグインを使用するようにプロジェクトを設定しました

  1. Eclipseでのビルドを自動化するために、プロジェクト用に新しいタイプのプログラムビルダーを作成します。このビルダーは、コマンド「mvnassembly:assembly」を実行します。

ステップ1

ここに画像の説明を入力してください

ステップ2

ここに画像の説明を入力してください

ステップ3:[ビルドオプション]タブで、この実行の詳細を構成できます。

jenkinsの場合、テストからのみ使用されるダミープラグインを作成します。

于 2012-05-07T20:41:29.917 に答える
0

プラグインのmaveninstallを実行します。これにより、結果のjarがローカルのmavenリポジトリに配置されます。次に、依存関係セクションでプラグインを依存関係として指定します。この場合、これらのプロジェクトは兄弟ですが、mvnゴールが親で実行されるときに親がビルド順序を指定するという意味で、これらは兄弟にすぎません。それらの実際のビルドアーティファクトは、そこで使用する場合は兄弟によって含まれている必要があります。

于 2012-05-04T20:08:00.207 に答える