問題タブ [maven-shade-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java コマンドラインで JPA 準拠の persistence.xml ファイルを指定できますか?
すべての Java クラスを含む UberJar を持っていますが、この jar を外部の persistence.xml ファイルで実行したいと考えています。仕様によると、Hibernate (またはその他の JPA プロバイダー) は、クラスパスにある META-INF フォルダー内の persistence.xml ファイルを探しますが、これを UberJar で機能させることはできませんでした。何か案は?UberJar のクラスローダーは、jar ファイルの内容に制限されていますか?
jar - Maven-shade-plugin で動作するように Maven 化されていない依存関係を含める
Maven を使用しないGData Clientを依存関係として Maven プロジェクトに含めたいと考えています。一連の JAR ファイルとして出荷されます。
さらに、Maven Shade Pluginを使用して、外部依存関係なしで実行可能な JAR をビルドします (デフォルト構成では、依存関係の名前変更/包含/除外/変換はありません)。
どうやってやるの?
(Shade プラグインが JAR を抽出する必要があるため、JAR をリソースとして追加するだけでは機能しません)。
plugins - m2eclipse : プロジェクトではなく JAR としての Maven 依存関係
m2eclipse プラグインを使用して、Eclipse で Maven プロジェクトを作成しています。このプロジェクトにはいくつかの依存関係があります。それらのいくつかは、slf4j、apache-commons などのライブラリです。しかし、Eclipse で同時に開発している私のライブラリもあります。残念ながら、m2eclipse は、私のライブラリが M2 リポジトリからの JAR アーカイブとしてではなく、/target/classes
ディレクトリからのクラス ファイルとしてクラスパスに追加されるような方法でビルド パスを作成します。そのため、次のメッセージが表示されるため、maven-shade-plugin を使用できません。
" Error creating shaded jar: error in opening zip file /home/user/workspace/my-project/project-a/target/classes
"。
project-a
すべてを使用してコマンドラインからビルドすると、mvn clean install
うまく機能します-シェーディングされたJARが生成されます。修正方法は?
maven - マルチモジュール プロジェクトで Maven シェード プラグインを使用する - NullPointerException
すべてのモジュールとその依存関係を含むマルチモジュール maven プロジェクトの uber jar を作成する必要があるシナリオがあります。maven shadeプラグインを使ってみました。しかし、モジュールレベルで使用した場合にのみ機能するようです。親 pom にプラグイン エントリを追加すると、ビルドが中断します (親 pom をシェーディングしようとします)。
<packaging>
親mavenプロジェクトのはpomであるため、それは理にかなっているようです。しかし、マルチモジュールプロジェクト用のuber jarを作成する方法がいくつかあるはずです...何かアイデアはありますか???
jar - 重複するクラスがある場合、Maven シェード プラグインがビルドに失敗することはありますか?
Maven シェード プラグインは、プロジェクトの Java クラスとその依存関係を単一の uber JAR ファイルに結合します。重複がある場合 (たとえば、2 つの依存関係に同じ修飾名のクラスが含まれている場合)、警告が発行され、(正しく理解できれば) 検出されたそのクラスの最後のバージョンが使用されます。
私には、これは少し緩すぎるように思えます。このようなオーバーラップは、実行時にリンクやその他の問題を簡単に引き起こす可能性があります。たとえば、オーバーラップするクラスに異なるバイトコードが含まれている場合などです。
警告を発行するだけでなく、オーバーラップがある場合にビルドに失敗するようにシェード プラグインを構成することは可能ですか? これは、警告があるかどうかを確認するために誰もログ ファイルを監視していない CI サーバーで特に役立ちます。
java - jarにテストコードを含めるようにMavenシェードプラグインを構成するにはどうすればよいですか?
私はshademavenプラグインを使用してプロジェクトをビルドし、そのすべての依存関係が1つのjarに含まれるようにします(これにより、Hadoopでの実行が容易になります)。Shadeはデフォルトで私のテストコードを除外しているようですが、これは理解できます。クラスターに対して統合テストを実行したいので、この目的のために別のjarを構築するために別のプロファイルをセットアップしたいと考えています。テストコードも含めるようにこのプラグインを構成する方法はありますか?
java - Maven Shade プラグインの使用中に ClassNotFound 例外が発生する
このリンクをたどろうとしています: http://maven.apache.org/plugins/maven-shade-plugin/examples.html
私はMavenが初めてです。例に従おうとすると、少し深みがないように感じます。
Quartz Scheduler を Spring と連携させることができました。jarファイルを使用してコマンドラインから実行できるようにしたい。
これが私が使用したクラスとpomファイルのリストです。
編集:
シェード jar ファイルを取得できます。mvn clean install を使用しました
しかし、コマンドラインから実行しようとすると、次のエラーが発生します。
C:\Users\SpringExample\target>java -jar SpringExample-1.0-SNA
PSHOT-shaded.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/sonatype/haven/Ex
odusCli
Caused by: java.lang.ClassNotFoundException: org.sonatype.haven.ExodusCli
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: org.sonatype.haven.ExodusCli. Program will exit.
EDIT2:
このリンクを使用して、上記の pom で次を使用しました。
http://seanfreitag.wordpress.com/2011/07/25/create-an-executable-jar-with-dependencies-using-maven/
maven-2 - コンソール アプリを作成するための Maven アーキタイプはありますか?
メイン機能を持つmavenスタブプロジェクトを生成することは可能mvn archetype:generate
ですか?ビルドプロセスの一部には、App.cmd/App.shを作成してシェルからアプリを実行することが含まれますか?
コマンドライン起動用のラッパースクリプトを含むコンソールアプリjarを作成するには、 maven-shade-pluginが必要なようです。ただし、Maven プロジェクトを構成してそれを使用し、空のコンソール アプリを作成するための archtype であるかどうかはわかりません。
maven - Maven シェード jar が例外をスローする
次の例外があります。
cachedInputStream(Resource.java:61) で sun.misc.Resource.getByteBuffer(Resource.java:144) で java.net.URLClassLoader.defineClass(URLClassLoader.java:256) で java.net.URLClassLoader.access$000(URLClassLoader. java:58) で java.net.URLClassLoader$1.run(URLClassLoader.java:197) で java.security.AccessController.doPrivileged(Native Method) で java.net.URLClassLoader.findClass(URLClassLoader.java:190) で Java.メインクラスが見つかりませんでした: com.mainClass. プログラムは終了します。URLClassLoader.defineClass(URLClassLoader.java:256) で java.net.URLClassLoader.access$000(URLClassLoader.java:58) で java.net.URLClassLoader$1.run(URLClassLoader.java:197) で java.security.AccessController.doPrivileged (ネイティブ メソッド) java.net.URLClassLoader.findClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java:306) で sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) で) java.lang.ClassLoader.loadClass(ClassLoader.java:247) でメイン クラスが見つかりませんでした: com.mainClass。プログラムは終了します。URLClassLoader.defineClass(URLClassLoader.java:256) で java.net.URLClassLoader.access$000(URLClassLoader.java:58) で java.net.URLClassLoader$1.run(URLClassLoader.java:197) で java.security.AccessController.doPrivileged (ネイティブ メソッド) java.net.URLClassLoader.findClass(URLClassLoader.java:190) で java.lang.ClassLoader.loadClass(ClassLoader.java:306) で sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) で) java.lang.ClassLoader.loadClass(ClassLoader.java:247) でメイン クラスが見つかりませんでした: com.mainClass。プログラムは終了します。doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) java.lang.ClassLoader.loadClass(ClassLoader.java:247) でメイン クラスが見つかりませんでした: com.mainClass。プログラムは終了します。doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java: 301) java.lang.ClassLoader.loadClass(ClassLoader.java:247) でメイン クラスが見つかりませんでした: com.mainClass。プログラムは終了します。
私のポン:
java - maven-shade-pluginを使用する際の不要な警告
単純なmavenプロジェクトにmaven-shade-pluginを使用しています。プラグインは、すべての依存関係を最終的な「シェーディングされた」jarに正常に含めます。このプロセスは毎回うまく機能し、必要なものを正確に生成します。
「最初の」時間(後clean
)に実行すると、プラグインは静かになり、出力はほとんど生成されません。ただし、(前回のビルドからのを使用せずに)再実行するclean
と、このような警告メッセージが多数表示されます。
これは警告メッセージのみであり、最終的なアーティファクトは正常に機能します。
clean
私の質問は単純です。最初に実行しなくても、これらの警告メッセージを安全に回避または抑制するにはどうすればよいですか?
注:考えられる解決策は、 maven-assembly-pluginに移動することですが、 maven-shade-pluginの構成は非常に素晴らしく、単純なので、移動したくないと思います。