9

この質問については少し愚かですが、SINGLE依存関係(jdom.jar)を別のjarに追加する方法がわかりません。

コンテキスト:アプリケーション用の単純なプラグインを開発しました。このプラグインには多くの依存関係があります。fatjarを使用してjdom.jarを含めていました。このプラグインのバグを修正しようとしているので、同時に「Maven化」することにしました。(Mavenに切り替えたばかりです)このプラグインはランタイムにロードされるため、パッケージ化する必要がある依存関係はjdom.jarのみです。

問題:Maven Fatjarプラグインがあることがわかりました!残念ながら、ドキュメントが見つかりませんでした。このMavenプラグインは、すべての依存関係を出力jarに追加します。何度も試した後、私はこのfatjarプラグインをあきらめて、別のプラグインを探すことにしました。私は1つの瓶、日陰を見つけましたが、それらをざっと読んだ後、それらはすべての依存関係を追加しているように見えます。

質問:次のように、プラグインjarにjdom.jarのみを追加する簡単な方法は何でしょうか。

-MyPlug-in.jar
|
| -src
 |-メイン
  | -java
   |-*。java
| -jdom.jar

また、マニフェストまたは出力jarファイル名を変更したくありません

どうもありがとうございました。

4

3 に答える 3

21

ここでは、Mavenを使用して単一のjarファイルを。に含める方法については回答がありませんでしたmaven-shader-plugin。実際にそれを行う方法を理解するのに少し時間がかかりました。これは、依存関係のクラスのみを含めるためのスニペットcom.googlecode.json-simple:json-simpleです。

<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                   <include>com.googlecode.json-simple:json-simple</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
    ...
</project>
于 2015-12-05T17:52:50.720 に答える
1

Maven Shadeを使用すると問題なく機能し、1つのjarファイルでも機能します。しかし、最終的に、拡張機能にjdomをパッケージ化することは悪い習慣であると判断しました。

代わりに、これを行います。

|-ルートアプリケーションフォルダ
 |-拡張フォルダ
  | -MyExtension.jar
  |-libsフォルダー
   | -jdom.jar

libフォルダーへのjarは動的にロードされ、拡張機能がlibsフォルダーに適切なlibを見つけられない場合はロードされません。

私の主な問題を解決しようとしている人は、@khmarbaiseAnswerをチェックしてください。

于 2012-07-12T13:50:22.183 に答える
0

この種の目的のために、私は多くの方法で制御できるueber-jarを作成するmaven-shade-pluginを使用することをお勧めします。シェードプラグインを使用すると、気に入らないものを除外できます。ただし、これは、依存関係を制御できる別のMavenモジュールを使用していないことが原因である可能性があります。

于 2012-07-12T07:09:30.153 に答える