依存関係を持つ jar を作成するには、次の 2 つの方法があります。
- Hadoop は jar 形式の jar をサポートします。つまり、jar には、ジョブの送信時にクラスパスに追加される jar の lib フォルダーが含まれており、タスクの実行をマップ/削減します。
- jar の依存関係を解凍し、それらをクラスと共に単一のモノリシック jar に再パックできます。
最初の方法では、Maven アセンブリ定義ファイルを作成する必要がありますが、実際にはその価値よりも手間がかかります。2 つ目も Maven アセンブリを使用しますが、組み込みの記述子を使用します。project -> build -> plugins
2 番目を使用するには、pom のセクションに次を追加するだけです。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
mvn package を実行すると、ターゲット フォルダーに 2 つの jar が作成されます。
${project.name}-${project.version}.jar
- プロジェクトのクラスとリソースのみが含まれます
${project.name}-${project.version}-jar-with-dependencies.jar
-クラス/リソースと依存関係ツリーのすべてが含まれ、コンパイルのスコープがアンパックされ、単一のjarに再パックされます
複数のエントリ ポイントの場合、特に何もする必要はありませんMain-Class
。jar マニフェストでエントリを定義しないようにしてください (マニフェストを明示的に構成する場合、そうしないと、デフォルトでは Main-Class に名前が付けられないため、いいはず)