問題タブ [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 - Mavenを使用してクラスの競合を回避する方法
maven-shade-plugin を使用してプロジェクトをビルドしますが、処理できない問題が発生しました。ほぼ同じクラスの 2 つの jar があり、パスが同じ aspectjweaver.jar とspectjrt.jar の場合、 jarをパッケージ化すると、「重複したクラスが....に存在します」という警告が表示されます。「再配置」プロパティを使用してクラスを再配置しようとしましたが、問題は、2 つの jar でクラスを認識するにはどうすればよいですか? 次は私の Pom.xml の一部です。org.apache.maven.plugins maven-shade-plugin 1.3.1
maven - シェードjarを使用したMavenパッケージのJDO依存関係
コードと依存関係で構成されるシェードジャーをパッケージ化しようとしています。すべてを正常にパッケージ化できますが、DataNucleus(datanucleus-core、datanucleus-api-jdo、datanucleus-rdbms)を使用しているため、ルートディレクトリにplugin.xmlがあります。シェードに付属するXmlAppendingTransformerを使用してみましたが、これらのxmlのルート要素は<plugin>
トランスフォーマーであるため、すべての<extension>
要素を1つの巨大な<plugin>
タグにマージし、実行時にDataNucleusクラスローダーが適切なプラグインを見つけることができません。だから私の質問は:
1)すべての依存関係を1つのjarにパッケージ化することは良い習慣ですか?または、依存関係をフォルダーにコピーし、実行時にそのフォルダーをクラスパスに含める必要がありますか?
2)DataNucleusをjarと一緒にパッケージ化する場合、複数のplugin.xmlを処理する方法は?ルートタグに入れてみました<plugins>
が、うまくいきませんでした。それらはルートフォルダにある必要がありますか?シェーディングプロセス中にそれらを別のフォルダーに移動できますか?
maven - maven shade プラグインのトップレベルの依存関係に基づいて除外する方法は?
ファット jar から除外したい依存関係が 1 つあり、その依存関係には多くの推移的な依存関係があります。これらの依存関係のすべてをリストすることなく、その依存関係とそのすべての推移的な依存関係がファット jar から除外されるように、pom ファイルに設定できる構成はありますか?
eclipse - m2e shade eclipse「プロジェクトの主なアーティファクトが存在しません」
Eclipse の別の Maven プロジェクトに依存する Maven モジュールのすべての依存関係をバンドルする展開パッケージを作成しようとしています。
私はpom.xmlにこれを持っています
その「m2 Maven Build」をEclipseで使用し、「org.apache.maven.plugins:maven-shade-plugin:shade」という目標と「ワークスペースアーティファクトの解決」にチェックを入れました。
失敗しています
この時点で考えが尽きました。
java - maven-shade-plugin でビルドされた pdfbox を使用したプログラムの結果が、通常の NetBeans の実行と異なる
PDFBox 1.7.1を使用するJavaのプログラムがあり、maven-shade-plugin 2.0でビルドされています。
PDFBox APIを使用するコードは次のとおりです。
したがって、基本的にメソッドload()
はバイト配列からPDFドキュメントをロードし、メソッドextractText()
はPDFから抽出されたテキストをバイト配列として返します。NetBeansRun
ボタンからプログラムを実行すると機能しますが、maven-shade-plugin で構築された単一の jar から実行すると、返されるテキストの文字エンコーディングが正しくありません。たとえば、単語:
to PdfFile.load()
両方の実行で引数として来るのは、まったく同じファイル(バイト配列)であることを私は知っています。問題は、PDFボックスが2つの異なる形式でテキストを返すことです...
3 つの質問があります。
- シェードプラグインエンコーディングで構築されたjarが異なるのはなぜですか?
- シェードプラグインで構築されたjarで使用されるエンコーディングを制御/設定するにはどうすればよいですか?
- PDFボックスにテキストを正しい形式で返すように強制するにはどうすればよいですか?
コマンドラインPDFBoxには、エンコーディングを設定するオプションがあることを知っています:
しかし、私は PdfBox api でそれを見つけることができません...
解決済み: 変更する必要がありました
に
java - Maven シェード プラグイン
Maven シェード プラグインと Maven アセンブリ プラグインを使用して、Maven マルチモジュール ビルドからアセンブリをビルドしようとしています。私が必要とするのは、そのような構造です:
assembly.zip
------------- dllDir
-----------------一部の dll はサブモジュールに配置されています
--------- ---- .netDir
----- .net lib (va ikvm) としての完全な jar (すべてのモジュール jar で構成される)
--------- ---- fulljarDir
----------------- Java フル jar (すべてのモジュール jar で構成される)
----------------- Java API jar (一部のクラスのみ)
----------------- full-jar ソース
----------------- api-jar sources
------------- libs
-----------------すべてのサブモジュール ライブラリ ("normal"-jar、sources-jar、jar-依存関係あり)
-------------extlibDir
-----------------一部のサブモジュール ディレクトリにあるその他の jar/
dll
------------- docDir
---- -------------一部のドキュメント (アセンブリ プロジェクト自体からコピー)
現在、アセンブリ プロジェクトでシェード プラグインを使用して、full-jarとapi-jar (すべてのモジュールはアセンブリ プロジェクトの依存関係として記述されています) とそのソースを作成しています。
アセンブリ プラグイン (およびアセンブリ記述子) を使用して、モジュールから jar と dll を収集します。
問題は、(すべてのモジュールの) fat jar をコンパイルするために shade プラグインを使用していることです。しかし、私はモジュールも使用しているため、パッケージ化する必要がありpom
、それが動作につながり、shade プラグインが jar の代わりに (ソースを含む) pom を作成します。シェードでタグを使用すると、<finalName>
アーティファクト全体の名前を jar に変更できますが、生成されたソースの名前は変更されません。
ヒントやコツはありますか?そのようなアセンブリを作成するためのより良い方法があるでしょうか?
ベスト、ヤン
maven - maven-shade-plugin を使用して、dependencyReducedPom をどのように使用できますか?
私は、複数のjarを参照せずにneo4jアプリケーションをパッケージ化されたRARに含めるためにmaven-shade-pluginを集中的に使用するオープンソースプロジェクト( neo4j-connector )に取り組んでいます(maven-rar-pluginの制限のようです)。
いずれにしても、neo4j ソース コードが neo4j-connector-impl jar に埋め込まれているため、neo4j-connector-impl (shade プラグインを使用) pom は依存関係として neo4j を参照しますが、これは完全には正確ではありません。
createDependencyReducedPom
シェーディングされていないコンポーネントのみを含む pom を生成できるフラグがあることに気付きました。そのプロジェクトの依存関係に標準のものの代わりにそのpomを使用するにはどうすればよいですか?
spring - Maven シェード プラグインと Spring リソース インポート: 参照されていない Bean
jar ファイルを 1 つだけ出力するために、Maven シェード プラグインを使用して Spring - Jnlp プロジェクトをビルドします。このプロジェクトには、2 次 Spring プロジェクトを参照する 1 つの依存関係があります。結果の jar 構造は、指定されたすべての依存関係パッケージ、クラス、およびリソースを正しく表示します。これには、アーカイブ ルートに配置されたimport-application-context.xmlが含まれます。残念ながら、Spring は実行時にインポートされたファイルに構成された Bean をロードできません。
pom.xml
アプリケーションコンテキスト.xml
例外
maven - 影付きの.jarがインストールされています
Mavenにインストールするときに陰影のあるjarの作成を無効にする方法はありますか?
私は試した
しかし、それはまだそこにあります。
何か案が?どうも。
maven - maven-assembly-plugin での maven-shade-plugin の使用
maven-assembly-plugin を使用していくつかの (実行可能な jar) アセンブリをパッケージ化するプロジェクトがあります。基本的に同じコードですが、クライアントごとに異なるデータ セットがあります。
実行可能 jar で spring を使用する必要があり、spring のファイル命名により、jar の作成に maven-shade-plugin を使用する必要があります。これは正常に動作し、実行可能 jar を作成できますが、shade プラグインはアセンブリ プラグインから利用できる機能の多くを提供しないため、他のファイルをこの新しいシェーディング jar にアセンブルする方法を理解できません。
シェーディング プラグインはアセンブリの前に実行されるため、アセンブリでシェーディング アーティファクトを何らかの方法で使用できると想定していますが、これまでの試みはすべて失敗しました。既存の影付きの jar を取り、バイナリやその他のファイルを単純に挿入するアセンブリを作成することは可能ですか?