問題タブ [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 shade jar で SSHJ を使用してリモート接続する
SSHJ を使用してリモート マシンに接続しましたが、IntelliJIDEA から接続すると正常に動作します。ただし、maven-shade-plugin を使用して「uberjar」をビルドしようとすると、以下に示すスタックトレースが表示されます。
Shade jar に org.bouncycastle.bcprov-jdk16 があり、私のプログラムはそれをプロバイダとして明示的に追加します: Security.addProvider(new BouncyCastleProvider());
ここで提供されている回答に従って、jar に署名しようとしました: SSHJ と Maven シェード プラグイン 'maven-jarsigner-plugin' と 'maven-gpg-plugin' を使用したテストですが、うまくいきませんでした。
どんな助けでも大歓迎です!ありがとう!
java - maven-shade-plugin とライセンス
maven-shade-plugin を使用して最小化された jar を作成していますが、外部の依存関係が非常に多く含まれています。あらゆる種類のオープンライセンスを持っています。これらのライセンスを便利で適切な方法で保持するにはどうすればよいですか?
シェーディングされた jar の内容を特定の入力 jar に自動的に関連付け、どのクラス ファイル/リソース ファイルがどの入力 jar/ライセンスに属しているかを説明する概要ファイルを作成する既存の方法はありますか?
java - maven-shade-plugin : プロジェクトの戦争中に jar を作成しますか?
質問はタイトルにあります。最初に jar (プロジェクト パッケージ jar) を実行することに成功し、それから id do の前に移動します。
mvnクリーン
他の場所に保管します。
または、私は戦争プロジェクトに参加しているので、プロジェクトパッケージの名前を戦争に変更する必要があります。
mvn クリーン インストール
私は自分の戦争を手に入れました。次に、戦争から使用する最初の jar をインポートします。
war と jar の両方を生成するために、maven shade プラグインを使用してそれを行うより明確な方法はありますか。
包装は次のとおりです
戦争/瓶
ファイルの先頭にあるプロジェクトの説明で、maven をスローするたびに変更する必要があります。
ありがとう
java - 署名付きjarの解凍に基づくmaven構造の問題
Mavenを使用してスタンドアロンアプリケーションに取り組んでいます。私は次のシナリオを試しました. これにより、セキュリティ例外「jceはプロバイダーbcを認証できません」が発生するため、jarの署名が失われました。2. maven アセンブリ プラグイン (assembly.xml に基づく) と maven jar プラグイン (すべての jar のクラス パスを設定するため) の使用ZIPファイル。このロジックは、アプリケーションが正常に動作するセキュリティ例外の問題を修正しました。しかし、ここでは、bcprov-jdk16-1.46.jar のみを lib フォルダーに移動する必要があります。他の jar は、アプリケーション jar 自体に存在する必要があります。
しかし、私は次の構造を行う必要があります
java - Maven ビルドに合成ファイルを javadoc アーティファクトとして含める
1 つのモジュールが他のモジュールの影付きバージョンを表す Maven を使用してマルチモジュール プロジェクトを構築しています。
親
|- ベース
|- ベース シェーディング
モジュールにはすべてのbase
ソース ファイルが含まれていますが、独自の名前空間にインポートしたい依存関係があります。このシェーディングされたモジュールは、base-shaded
基本的に依存関係を構成する POM とbase
Maven Shade プラグインのみを含む私のモジュールによって記述されます。
これはうまくいきます。Shade プラグインにはすべての依存関係が含まれ、ソース アーティファクトを含むシェーディング アーティファクトが作成されます。ただし、javadoc
Shade プラグインによって作成されたものではないアーティファクトがありません。したがって、base
モジュールの javadoc アーティファクトをコピーしようとしました。ただし、release:release
目標はこれらのアーティファクトを無視するため、Maven Central にデプロイできません。それでも、これらのファイルをコピーしてインストールターゲットに含めることができました。
アセンブルされていないファイルをビルドに含める正規の方法はありますか? 私は間違ったアプローチかもしれないと考え始めます。
これが私のbase-shaded
POMのプラグイン構成です。大変申し訳ありませんが、最終的には Maven XML です。
java - Maven shade uber jar にリソースを読み込めない
すべてが 1 つの jar にパッケージ化されているプロジェクト用の実行可能 jar を作成できる必要があります。これを行うには Maven シェード ビルド プラグインが最適な方法だと思いますが、作成した uber jar バージョンを実行するときにリソースをロードする際に問題が発生します。
これをもう少し詳しく説明すると、リソースをロードしようとするとNullPointerException
、リソースが見つからないためにエラーが発生します。作成された jar 内の検査では、リソースはルートにあるため、それらを見つけることができない理由がわかりません。
私の問題を明確にするために、ファイルの内容を出力するこの小さな例を作成しました。構造は次のとおりです。
Debug
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- Main.java
|-- resources
`- tmp.txt
ファイルの実際の内容は次のとおりです。
Main.java:
tmp.txt:
pom.xml:
これをコマンドラインで実行するmvn exec:exec
と、すべて正常に動作し、期待される結果Hello World!
が出力されます。
ただし、mvn package
続いて実行java -jar target/debug-1.0-SNAPSHOT.jar
すると、次のエラーが発生します。
誰かが私を正しい方向に向けたり、これを機能させるために私の小さな例を変更する方法を教えてくれたりすると、とても感謝しています!
java - 単一のコードベースで複数のアーティファクト用に Maven を構成する方法
JAR にコンパイルされる単一の非常に大きなコードベースがあります。また、shade プラグインを使用してコンパイルし、すべての依存関係とともにパッケージ化します。また、war プラグインを使用して WAR ファイルを取得します。
WAR ファイルに関しては、ゴールが作成されると、WAR ファイルを宛先にコピーするだけのビルド後のイベントがあるので、技術的にはそれで問題ありません。
私が抱えている問題は、他の 2 つの JAR にあります。両方とも単一の pom.xml に組み込まれているため、両方とも同じ artifactId を共有します。これは、いくつかの理由で受け入れられません (依存関係のキャッシュの一部が、その 1 つを実現することについてかなりばかげているという事実を含むが、これに限定されません)。 JAR は薄いもので、もう 1 つは完全依存のものです)。
私がする必要があるのは、ビルド (Jenkins による) に適した pom.xml (またはそのグループ) を作成することです。これは、同じコードベース (Github からプル) を使用できますが、それぞれ独自の artifactId を持つ 2 つの別個の JAR ファイルを作成します。
Maven の初心者として、最初の本を読みましたが、2 つのモジュールを持つ親 pom.xml が必要なようです。しかし、私が知る限り、各モジュールは個別のコードを持つ個別のディレクトリを意味します。私が言ったように、これは同じコードベースから構築されています。唯一の違いは、一方が「通常の」ビルドからビルドされ、もう一方が「シェード」プラグインとゴールを使用してビルドされることです。
私が考えることができる唯一の他のことは、「通常の」JARを構築し、次に「フル?」の分類子でシェーディングされたJARを構築することです。これが答えである場合、これを行う方法について大人の監督を謙虚にお願いできますか。
それが答えでない場合、これはよくある問題だと思います。もう一度、いくつかのガイダンスが非常に役に立ちます!