問題タブ [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.
maven - maven shadeプラグインでマニフェストクラスパスを設定するには?
私はシェード プラグインを使用しています。
私は得る
ドクターを見ると
有効なマニフェスト リソースを解析できる必要がありますか? 私は clss-path Class-Path ClassPath を試しました 何も動作しません...
外部アプリ プロパティ ファイルの場所を設定するには、クラスパスが必要です。
よく知られている問題のため、アセンブリの代わりにシェード プラグインを使用しています。
http://blog.idm.fr/2009/09/maven-assembly-plugin-and-spring-namespace-handlers.html
ちなみに、私はアセンブリでこれをかなり簡単に行うことができます:(そしてそれは動作します)
マニフェスト エントリも設定できないため、maven 経由で oneJar プラグインを使用できません。(思わない?)
何か案は?
java - Jenkins のビルド中に maven-jarsigner-plugin が失敗するが、コマンド ラインでは失敗しない
与えられた次の環境:
- Windows Server 2012
- Java 1.6
- 構成済みの Maven プロジェクト (アセンブリまたはシェード プラグイン) および jarsigner:sign/verify プラグイン
- Tomcat 7 内で動作する Jenkins 1.518 (Java 1.7 で動作)
- Windows サービス ユーザーとして実行されている Tomcat
Maven プロジェクトをビルドすると、すべてが正常に機能し、アセンブリがビルドされ (アセンブリ プラグインとシェード プラグインを使用)、最後にアセンブリが署名され、maven-jarsigner-plugin で検証されます。
しかし、 jarsignerがアセンブリに署名しようとすると、Jenkins で構成された同じプロジェクトがビルド中に失敗します。ログファイルは次のように述べています。
上記のログ ファイルをドイツ語から英語に翻訳したので、正確な言い回しがわからないため、異なる場合があります。
詳細なログ ファイルには次のように記載されています。
解決策を探していると、このブログエントリにたどり着きました: http://www.iliachemodanov.ru/en/blog-en/14-tools/maven/44-maven-assembly-plugin-bug-en
ここで「maven-shade-plugin」が解決策として挙げられていたので、試してみます。pom ファイルを再構成しましたが、効果は同じです。Windows、Tomcat、または Jenkins がアセンブリのファイル ハンドルを保持しており、jarsigner プラグインがその名前を変更できないことがわかります。
だから、可能な解決策に対する私の答え。他のより洗練されたソリューションは高く評価されます。
java - *.DSA および *.SF ファイルをシェーディング jar から除外するにはどうすればよいですか?
pom.xml にセクションがあります
*.SF および *.DSA ファイルを最終的な jar から除外したい。しかし、次のメッセージが表示されます。
ファイルは除外されません。誰かがそれを克服する方法を知っていますか?
java - 子プロジェクトで再配置された依存関係を使用する
ヘイホー、
現在、bukkit プラグインを開発しており、グアバを使用したいと考えています。Bukkit はまだ Guava 11.0 を使用していますが、14.0 を使用したいと考えています。そこで、メインモジュールでグアバを再配置しようとしました。これは完璧に機能しました。同じレベルの他のモジュールもグアバを使用しており、「同じ」グアバが必要です。メインプロジェクトでも使用されているグアバです。もちろん、インポートは変更され、メイン プロジェクトと他のモジュールは互換性がありません。
プロジェクトの構造:
親:
- メイン モジュール: guava(14.0) の再配置されたバージョンを使用します#
- 別のモジュール: guava 14.0 を使用していますが、再配置されていません -> メイン モジュールと互換性がありません
グアバを他のモジュールの同じパスに再配置しようとしましたが、何も起こりません。
多分誰もがこれを修正する方法を知っています。他のモジュールで再配置されたグアバを使用する方法が必要です:/
maven - maven-shade-plugin での maven-bundle-plugin の使用
ビルドのパッケージ段階でいくつかのパッケージを再配置するために maven-shade-plugin を使用しています。また、maven-bundle-plugin を使用してマニフェストを生成しています。問題は、バンドル プラグインがシェード プラグインの前に (プロセス クラス フェーズで) 実行され、生成されたマニフェストのエクスポートにシェーディングされたパッケージが含まれないことです。
再配置されたパッケージがバンドル プラグインによって他のパッケージと同様に扱われるように、これら 2 つのプラグインを互いにうまく連携させるにはどうすればよいですか?
--
リクエストにより、POM の Shade および bundle セクション:
ここから撮影
java - Maven shade プラグインが javax.jnlp を解決できない
プロジェクトをプラグインでパッケージ化しようとしていますshade
が、次のエラーが発生します。
これが私のpomビルドプラグインエントリです:
MacOSX 10.6 と Java 1.6 を使用しています。何が問題なのですか?
java - Maven Shade Plugin を使用してシェーディング jar をビルドするときに Clojure .clj ファイルのタイムスタンプを保持する
maven-shade-plugin を使用して、いくつかの Clojure ライブラリといくつかの Java を含む jar アーティファクトをパッケージ化する場合。Clojure コードには AOT コンパイルを使用していました。jar をロードすると、ロード時間が非常に遅くなりました。AOT コンパイルはこれにかなり役立つはずですが、実際にはそうではありませんでした。Clojure クラスがロードされているときに、Java jar -verbose の出力で、JVM__DEFINE_CLASS呼び出しが多数発生していることに気付きました。
Clojure コードの多くが .class ファイルに AOT コンパイルされていたため、これは意味がありませんでした。
maven-shade-plugin はすべての新しいファイルを作成し、最終アーティファクトに新しいタイムスタンプが含まれていることがわかりました。Clojure は .clj ファイルと .class ファイルのタイムスタンプ情報を使用して、ファイルを再コンパイルする必要があるかどうかを判断します。maven-shade-plugin により、.clj ファイルと関連する .class ファイルのタイムスタンプが同じになるため、Clojure は常にソースを動的に再コンパイルすることを選択していました。
現時点で判明している唯一の回避策は、シェーディングされた jar を再度開き、.clj ファイルのタイムスタンプを過去のある時点に戻すスクリプトを作成することです。関連する .class ファイルのタイムスタンプと等しくなります。
誰もがより良いアプローチを知っていますか?
java - SSHJ と Maven シェード プラグイン
Eclipse で SSHJ をテストすると、すべて問題ないようです。しかし、Maven shade プラグインを使用して SSHJ をパッケージ化すると、次のエラーが発生します。
追加する
エラーメッセージを次のように変更します。
これを回避する方法はありますか?
なぜshadeを使用したいのかについての背景...私は、Javaの使用と小さなユーティリティの配布が非常に簡単になるところまで到達しようとしています。だから私はこれを使って本当に実行可能なjarを作成します: https://github.com/brianm/really-executable-jars-maven-plugin。これにより、1 つの実行可能ファイルを作成して配布し、ユーザーのパスに追加することができます。Go がすべての依存関係を含む 1 つのバイナリ ファイルを持っているのと少し似ています。
maven - テスト中にMavenの依存関係が競合する(確実)が、本番では競合しない
同じライブラリのいくつかの異なるバージョンを必要とするアプリケーションがあります。intellij を実行する場合、競合を回避する方法でクラスパスをエクスポートするため、これは問題ではありません。次に、maven shade プラグインを使用して、実稼働用にコンパイルするときに uber-jar を作成します。
ただし、確実なプラグインを使用して単体テストを実行すると、競合が再び表示されます。確実なプラグインがこれらの競合を回避する方法でクラスパスを作成することを保証できる方法を知っている人はいますか?
ありがとう!
更新:以下は私が得ているエラーです(ただし、それは私のアプリケーションにかなり固有のものです)。基本的に、Saxon HE と PE には 2 つのバージョンがあり、両方がロードされています。確実なテストを実行すると、次の例外が発生します。