2016-08-18 5 views
2

私たちのartifactory mavenリポジトリはhttpsでしかアクセスできませんが、自己署名付き証明書を使用しています。新しい開発者が搭載できるようにできるだけ簡単にしたいので、証明書をデフォルトのJavaキーストアに追加しないことを選択しました。jvm.configの相対ファイルを参照してください。

代わりに、私はすべての私たちの自己署名証明書を使用して新しいキーストアを作って、/project-files/keystore.jksで私たちのプロジェクトのルートでこれを確認しました。私はまた/.mvn/jvm.configを追加しました。これはいくつかのプロジェクト固有のjvmオプションを設定します(maven 3.3.1で導入されています)。私の最初の試みでは、ルートディレクトリにMavenを実行しますが、私はそのサブディレクトリから単一のモジュールを実行した場合、それがトラストストアを見つけることができないと、失敗した場合、これは正常に動作します

-Djavax.net.ssl.trustStore=/project-files/keystore.jks 
-Djavax.net.ssl.trustStorePassword=password` 

ました。

次にシェル変数PROJECT_BASEDIRを追加し、jvm.configのtrustStoreが-Djavax.net.ssl.trustStore=$PROJECT_BASEDIR/project-files/keystore.jksになりました。しかし、まだトラストストアを見つけることはできません。 psを使ってプロセスを見ると、変数が解決されていないことがわかります。私も-Djavax.net.ssl.trustStore=${project.parent.basedir}/project-files/keystore.jksを試しましたが、それもうまくいきませんでした。

誰でもこの問題の解決策をご存知ですか?

+0

サブディレクトリから1つのモジュールを実行することは実際には推奨されていませんが、それでもルートディレクトリから実行し、 'mvn -pl ' –

+1

で実行するだけです。これは一般的な設定です。ユーザー設定が表示されます。単純な解決策は、https://maven.apache.org/guides/mini/guide-repository-ssl.htmlで読むことができます。そのようなものを意図した 'MAVEN_OPTS'または' $ HOME/.mavenrc 'を経由します。 '.mvn/jvm.config'はそのプロジェクト固有の場所ではありません。これはシステム固有です。この場合、私は '.mavenrc'や' $ HOME/mavenrc_pre.cmd'というウィンドウを使う傾向があります。それに応じて 'MAVEN_OTPS'を設定します... – khmarbaise

答えて

0

MNG-5767機能は、(プロジェクト固有のデフォルトのJVMオプションとコマンドラインがパラメータ)多くの場合、Mavenと便利に加える大きな特徴である、しかし、それは、その基本的なレベルのままである、それは高度な動作を提供していません(必要な場合)。

現在のディレクトリからモジュールをビルドするときに(つまり、親の.mvn/jvm.configを選ぶときに)ピックアップされるので、一般的な設定とグローバル設定のマルチモジュールプロジェクトでは本当に強力ですが、 )最新のMavenのバージョン3.3.9上の私のテストによると、執筆の時点で:

  • 追加.mvn/jvm.configとモジュールレベルで値を上書きすることはできません、彼らは「あなたができる
  • を無視されます。相対パスを持っており、モジュールディレクトリビルドから適切に動作することを期待しています。 (したがって、親.mvn/jvm.configを拾い、再び)そのディレクトリからモジュールを建物高ながら使用すると、彼らは早すぎるMavenのビルドフェーズ中(置き換えられないであろうから、そのようなブレーク相対パスの解決として
  • あなたはMavenのプロパティのプレースホルダを持つことはできません)この場合、

それを実行するために、実際に一般的にアドバイスは)-plreactor optionsを使用して、プロジェクトのリストを経由して指定したルート/親フォルダからモジュール名をモジュールを構築することです。

そう
mvn -pl <module-name> 

、相対パスが壊れてはならない、あなたはまた、例えば、単一の構築のためのマルチモジュールのビルド動作の利点を取ります(ある特定の依存関係がモジュールであるかどうかにかかわらずrootのpom.xmlファイルからMavenの依存関係ではなく)Maven依存関係を経由しないため、モジュール間の依存関係をソースコードでローカルに解決する他の依存関係と同様にモジュール間の依存関係を解決しようとします。ローカルのキャッシュとリポジトリを見て、最新のコードを取得しない可能性があります)。

+0

' .mvn/jvm.config'はmvnスクリプトの実行。現時点では、Mavenがまったく起動していないため、コマンドラインは解析されません。 JVMオプションを定義し、JVMを起動してオプションを上書きすると、JVMを再起動する必要があることがわかっています。なぜなら、起動したJVMのオプションを上書きすることはできないからです。さらに、 '.mvn/jvm.config'を読むときにMavenは起動されていないので、ビルドフェーズは実行されていませんか?たぶん、ここで役に立つと思うものについてもっと詳しく説明できますか?あるいは、ユーザー/ devのリストでこれをよりうまく議論するのが最善でしょうか? – khmarbaise

+0

@khmarbaise "必要ならば"実際にそれを指し示していますが、その機能は既に完成しており、追加の振る舞いは必要ありません。私はそれがどのように動作するのかを(推測して)知っていたので、私の答えはこのユースケースやその他の潜在的なユースケースの不可能性を説明しています。それらを確認していただきありがとうございます。 –

関連する問題