これはダムと聞こえるかもしれません。しかし、Mavenのデフォルトバインディングファイルを編集または更新する方法はありますか?ローカルのMavenのdefault-bindings.xmlを更新する方法はありますか?
/META-INF/plexus/default-bindings.xml
私はそれをしたいと思うのはなぜ?
背景 -
私はIntelliJの内のホームディレクトリとして私のマシン上で最新の
maven version 3.3.9
を使用しています。外部プラグインが指定されていない
testng-test
モジュールがあります。モジュールのpom.xml
を見てみましょう:<artifactId>testng</artifactId> <dependencies> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.9.13.6</version> </dependency> </dependencies>
および類似のpom.xmlが異なる依存して
junit-test
という名前の別のモジュールを次のように:<artifactId>junit</artifactId> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies>
私は、これらの内の2つの空のクラスを追加しましたモジュール(@Testメソッドやクラスはまだありません)。
活動 - 今、私はmvn clean install
を使用して、これらの各モジュールを構築しようと、モジュールjunit-test
は、正常にビルドが、モジュールtestng-test
は、次のログで失敗したときに
- :
[INF O] --- maven-resources-plugin:2.6:resources(デフォルトリソース)@ testng ---
[INFO] --- maven-compiler-plugin:3.1:@ testngをコンパイルします(デフォルトコンパイル)。 ---
[INFO] ---のmaven-リソース - プラグイン:2.6:TestNGの@ testResources(デフォルト-testResources)---
[INFO] ---のmaven-コンパイラプラグイン:3.1: TestNGの@ testCompile(デフォルト-testCompile)---
[INFO] --- のmaven-確実な-プラグイン:2.12.4:テスト(デフォルト検定)の試験@ NG ---
し、それがSurefireReflectionException
に実行します - TestNG6 を実行
org.apache.maven.surefire.util.SurefireReflectionException: にjava.lang.reflect.InvocationTargetException。ネストされた例外は java.lang.reflectです。InvocationTargetException:sun.reflect.DelegatingMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0でヌル にjava.lang.reflect.InvocationTargetException (ネイティブメソッド) (NativeMethodAccessorImpl.java:62) ( )。 at java.lang.reflect.Method.invoke org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) (org.apache.maven)の で、 surefire.booter.ForkedBoot org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) で をer.runSuitesInProcess(ForkedBooter.java:115)によって引き起こした:org.apache.maven.surefire.testset.TestSetFailedException: 不明
TestNGのバージョン6.9.13.6を試みた - 私は気づいた私は、明示的に<plugins>
プロパティに2.19.1
にmaven-surefire-plugin
用のプラグインのバージョンを更新する場合、物事はうまく動作します
へ。
しかし、プロジェクトのプラグインバージョンを明示的にオーバーライドしたくない場合は、どうすれば私のプロジェクトの最新のバインディング(少なくともこれらは修正されます)を使用して回避できますか?
デフォルトのバインディングを見ると、私はMavenのためのdefault-bindings.xml
ファイルにあるバインディングを source codeで見ることができましたが、私は私のインストールMavenのフォルダ内にそれを見つけるのはどちらか編集して更新することが可能であることができません。
デフォルトでは、プロジェクトリスト上の任意のMavenモジュールに対して実行するプラグインのバージョンを(デフォルトで)選択するためのデフォルトのバインディングを選択できますか?あなたがオーバーライドに任意のプロジェクトの特定のpom.xmlファイルを修正するwihtout のmaven-確実な - プラグインのバージョンをバージョンを上書きしたいよう
?共通の親POMの中に入れて、すべての子がそれを継承するようにすることができます。 – Tunaki
@Tunakiは、このような場合に複数のプロジェクトを検討し、複数のPOMを編集することを検討しています。私は、プラグインのバージョンを指定するとそれを解決することに同意します。しかし、既存のすべてのプロジェクトでプラグイン(デフォルト)バージョンを変更したい場合はどうすればいいですか? – nullpointer
すべてのプロジェクトに親があるか、BOMをインポートします。それがプラグインのバージョンをロックダウンする方法です。 – Tunaki