1.mvnパッケージ
MVNパッケージには、プロジェクトのニーズに応じて、我々はパケット構造をプレイしたい、のpom.xmlに配置されました
2.方法の抜粋
2.1パッケージのプラグインのmaven-jarファイル・プラグインとMaven依存性 - プラグイン
<ビルド> <プラグイン> <プラグイン> <groupIdを> org.apache.maven.plugins </ groupIdを> <たartifactId>のmaven-jarファイル・プラグイン</たartifactId> <バージョン> 2.6 </ version>の <設定> <アーカイブ> <マニフェスト> <addClasspath> 真 </ addClasspath> <classpathPrefix>のlib / </ classpathPrefix> <mainClass> com.xxg.Main </ mainClass> </マニフェスト> </アーカイブ> </ configuration>の </プラグイン> <プラグイン> <のgroupId> org.apache.maven.plugins </のgroupId> <たartifactId> Mavenの依存性、プラグイン</たartifactId> <バージョン> 2.10 </バージョン> <実行> <実行> <ID>コピーの依存関係</ ID> <相> パッケージ </相> <目標> <目標>コピーの依存関係</目標> </目標> <設定> <OUTPUTDIRECTORY> $ {project.build.directory} / libに</ OUTPUTDIRECTORY> </設定> </実行> </実行> </プラグイン> </プラグイン> </ビルド>
Mavenのジャー・プラグインのMETA-INF / MANIFEST.MFファイルを生成する部分、<mainClass> com.xxg.Main </ mainClass> <addClasspath>真</ addClasspath>、メインクラスのMANIFEST.MFに指定MANIFEST.MFのClass-Pathキーと設定の依存関係、<classpathPrefix>のlib / </ classpathPrefix>依存関係指定されたディレクトリを追加します。
Mavenの依存性、プラグインウィジェット<OUTPUTDIRECTORY> $ {project.build.directory} / libに</ OUTPUTDIRECTORY>指定された場所にコピー依存関係、即ち、ディレクトリLIB。設定後、MVNパッケージを梱包指示は、パッケージはジャーターゲット・ディレクトリに生成され、依存関係がターゲット/ libのディレクトリにコピーされ、
指定メインクラスは、依存関係と、それは、java -jarから直接xxx.jarのjarパッケージを実行することができます。
このよう発生ジャーパッケージには欠点があり、あまりにも多くのパケットが発生したということですjarファイルは、簡単に管理するために、プロジェクト自体のコード、リソース、およびすべての依存関係が含まれているjarファイルを生成するための唯一の二つの方法ではありません。
2.2 Mavenのアセンブリ・プラグインプラグインパッケージを使用して
<ビルド> <プラグイン> <プラグイン> <groupIdを> org.apache.maven.plugins </ groupIdを> <たartifactId>のmaven-組立・プラグイン</たartifactId> <バージョン> 2.5.5 </バージョン> <設定> <アーカイブ> <マニフェスト> <mainClass> com.xxg.Main </ mainClass> </マニフェスト> </アーカイブ> <descriptorRefs> <descriptorRef>ジャー付き依存性</ descriptorRef> </ descriptorRefs> </ configuration>の </プラグイン> </プラグイン> </ビルド>
パッケージのコマンド:組立用MVNパッケージ変更:SINGLE
パッケージには、ターゲットディレクトリ内XXX-ジャーと-dependencies.jarファイルが生成されます後は、このドキュメントには、独自のプロジェクト内のコードとリソースが含まれていますが、また、コンテンツのすべての依存関係が含まれていないだけ。これは、java -jarで直接実行することができます。
アセンブリにせずに、MVNパッケージを介して直接パッケージに加えて:シングル、しかし、いくつかの設定を追加する必要があります。
<ビルド>
<プラグイン>
<プラグイン>
<groupIdを> org.apache.maven.plugins </ groupIdを>
<たartifactId>のmaven-組立・プラグイン</たartifactId>
<バージョン> 2.5.5 </バージョン>
<設定>
<アーカイブ>
<マニフェスト>
<mainClass> com.xxg.Main </ mainClass>
</マニフェスト>
</アーカイブ>
<descriptorRefs>
<descriptorRef>ジャー付き依存性</ descriptorRef>
</ descriptorRefs>
</ configuration>の
<実行>
<実行>
<ID>メイクアセンブリ</ ID>
<相> パッケージ </相>
<目標>
<目標>シングル</目標>
</目標>
</実行>
</実行>
</プラグイン>
</プラグイン>
</ビルド>
ここで<フェーズ>パッケージ</位相>、<目標>シングル</目標>実行パッケージには、組み立てを行う、パック、手段:シングル、直接MVNパッケージを包装することができます。
しかし、プロジェクトが使用している場合は春の 時にパッケージの実行間違っているとこの方法を再生し、フレームワークを。
2.3のmaven-シェードプラグインパッケージウィジェット
<ビルド>
<プラグイン>
<プラグイン>
<のgroupId> org.apache.maven.plugins </のgroupId>
<たartifactId>達人-シェードプラグイン</たartifactId>
<バージョン> 2.4.1 </バージョン>
<実行>
<実行>
<相> パッケージ </相>
<目標>
<目標>日陰</目標>
</目標>
<設定>
<トランス>
<トランス実装= "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass> com.xxg.Main </ mainClass>
</トランス>
</トランス>
</構成>
</実行>
</実行>
</プラグイン>
</プラグイン>
</ビルド>
設定後は、パッケージにMVNパッケージを実行します。2つのJARパッケージを生成するターゲットディレクトリには、注意が元-xxx.jarファイルが、他のものではありません。あなたが直接実行できるようにとMavenアセンブリ・プラグインは、のように、生成されたjarファイルは、すべての依存関係が含まれています。
プロジェクトは春のフレームワークで使用されている場合は、XMLスキーマファイル実行時エラーを読み取り、ジャーパッケージを打つ依存します。その理由は、生成されたパケットは、各jarファイルを上書きした場合のSpring Frameworkのジャーパッケージが複数、同じファイルやspring.handlers spring.schemasが含まれていることです。互いの影響を避けるために、AppendingTransformerは、ファイルの内容をマージ付加するために使用することができます。
<ビルド>
<プラグイン>
<プラグイン>
<のgroupId> org.apache.maven.plugins </のgroupId>
<たartifactId>達人-シェードプラグイン</たartifactId>
<バージョン> 2.4.1 </バージョン>
<実行>
<実行>
<相> パッケージ </相>
<目標>
<目標>日陰</目標>
</目標>
<設定>
<トランス>
<トランス実装= "org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass> com.xxg.Main </ mainClass>
</トランス>
<トランス実装= "org.apache.maven.plugins.shade .resource.AppendingTransformer ">
<リソース> META-INF / spring.handlers </リソース>
</トランス>
<トランス実装=" org.apache.maven.plugins.shade.resource.AppendingTransformer ">
< リソース> META-INF / spring.schemas </リソース>
</トランス>
</トランス>
</ configuration>の
</実行>
</実行>
</プラグイン>
</プラグイン>
</ビルド>