ええと、私が知っているのは、おそらくそれを検索する必要があるということだけです。環境変数 M2_HOME、M3_HOME、または MAVEN_HOME のほとんどは、セットアップ/インストール プロセス中に設定されます。しかし、それが常に当てはまるかどうかはわかりません。コマンド プロンプトから直接 maven を起動できる場合は、おそらく PATH 環境にあります。そのため、Maven の環境を検索します。
String mavenHomePath = System.getProperty("maven.home");
if (mavenHomePath == null) {
Map<String,String> filteredMap = new HashMap<>();
final List<String> searchEnv = Arrays.asList(new String[]{"m3_home", "m3home", "m2_home", "m2home", "maven_home", "mavenhome", "path"});
for (final Map.Entry<String, String> entry : System.getenv().entrySet()) {
final String key = entry.getKey().toLowerCase();
if (searchEnv.contains(key)){
filteredMap.put(key, entry.getValue());
}
}
for (String key : searchEnv) {
for (final String pathEnv : filteredMap.values()) {
for (final String path : pathEnv.split(File.pathSeparator)) {
mavenHomePath = checkForMavenHomeIn(new File(path));
if (mavenHomePath != null) break;
}
if (mavenHomePath != null) break;
}
if (mavenHomePath != null) break;
}
}
System.setProperty("maven.home", mavenHomePath);
invokeYourPlugIn();
残念ながら、「PATH」は常に「PATH」という名前ではありませんが、少なくとも Windows システムでは「Path」または「path」でさえある可能性があります。m2_home などの場合もあります。そのため、大文字と小文字を無視して環境変数をフィルター処理しました。(実際にはmavenを探しませんでしたが、svnを探しましたが、同様の問題がありました)。そのため、「set m2home」や「set m2_home」などをよく読んでいますが、慣習があるかどうかはわかりません。
binのcheckForMavenHomeIn
親ディレクトリを探す必要があります。「パス」は「ビン」を指し、その他はmavenホームディレクトリを指します。
それ以外の場合は、おそらくユーザーにディレクトリの入力を求め、それをいくつかの Eclipse ワークスペース設定に保存する必要がありますが、少し事前検索を実行することをお勧めします。