[解決済み] Maven: assembly-pluginが全く実行されない
質問
私はMavenの初心者です。以前、何度か学ぼうとしましたが、Mavenを使わない方が良いと思いました。今、(不運にも)私は貢献したいプロジェクトでMavenを使用する必要があります。この時点での私の問題は、パッケージングに関するものです。私は、すべての依存関係を含む自己完結型(別名quot;fat")jarを作成したいと思い、Mavenで遊んでいた同僚がpomファイルで私を助けました。
彼のpomファイルや、ここのSOのサンプルも確認しました。xmlは正当なものに見えますが、プラグインは全く実行されません。エラーはなく、"fatjar"が表示されない以外はすべてうまくいっています。この問題の原因は何でしょうか?
以下、pom.xmlの該当部分です。の位置に関して、矛盾するコードサンプルを見たことがあります。
<configuration>
と
<executions>
タグを使い、あらゆるバリエーションを試しましたが、まだうまくいきません。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>make-jar-with-dependencies</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>ProjectName</finalName>
<appendAssemblyId>true</appendAssemblyId>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.mydomain.ProjectName</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
編集_1
からのコンソール出力は
mvn clean package
kkhmarbaise さんの質問通り
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ myproject ---
[INFO] Deleting /home/user/workspace/project/target
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ myproject ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 41 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ myproject ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 292 source files to /home/user/workspace/project/target/classes
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ myproject ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/user/workspace/project/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ myproject ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ myproject ---
[INFO] No tests to run.
[INFO] Surefire report directory: /home/user/workspace/project/target/surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ myproject ---
[INFO] Building jar: /home/user/workspace/project/target/myproject-2.0.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.210s
[INFO] Finished at: Thu Jun 07 11:45:14 CEST 2012
[INFO] Final Memory: 18M/184M
[INFO] ------------------------------------------------------------------------
解決方法は?
を使用してuberjarを作成することをお勧めします。 maven-shade-plugin というのも、その目的はまさにそれだからです。maven-assembly-pluginを使っても同様にできます。
そこで、あなたのpomを調べてみて、問題が分かりました。まず、pluginManagement ブロックで maven-assembly-plugin を定義しています。 NOT さらに、maven-assembly-plugin を別途依存関係として定義していますが、これは余計なことです。つまり、以下をpomから削除するだけです。
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.3</version>
<type>maven-plugin</type>
</dependency>
maven-assembler-pluginはこのように定義してください。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
...all your configuration here..
</plugin>
</plugins>
</build>
さらに、リポジトリマネージャで処理されるはずのリポジトリ定義も多く見受けられます。pom内のリポジトリについては、以下の文書を読むことをお勧めします。 ソナタイプ情報 さらに、他の人がプロキシなどでプロジェクトを使用する場合、その人が動作させるためにあなたのpomを変更しなければならないか、あなたのpomに定義されたリポジトリに到達できないために使用できないことを考える必要があります。
関連
-
[解決済み】Spring Data Maven Buildsの「プラグインの実行はライフサイクル構成でカバーされていません」を解決する方法
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Mavenプロジェクトにローカルのjarファイルを追加する方法は?
-
[解決済み] Mavenスナップショットとは何か、なぜそれが必要なのか?
-
[解決済み] mavenの強制アップデートを行うには?
-
[解決済み] java.lang.OutOfMemoryError: MavenにおけるJavaのヒープ空間
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] Cloneable throws CloneNotSupportedException
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?
-
[解決済み] IntegerからBigIntegerへの変換