diff --git a/src/recipe/lang/Java.c b/src/recipe/lang/Java.c index 002a0ed..8acb264 100644 --- a/src/recipe/lang/Java.c +++ b/src/recipe/lang/Java.c @@ -37,24 +37,50 @@ pl_java_prelude () void -pl_java_check_cmd (bool *maven_exist, bool *gradle_exist) +pl_java_check_cmd (bool *maven_exist, bool *gradle_exist, bool *maven_daemon_exist) { *maven_exist = chsrc_check_program ("mvn"); *gradle_exist = chsrc_check_program ("gradle"); + *gradle_exist = chsrc_check_program ("mvnd"); - if (! *maven_exist && ! *gradle_exist) + if (! *maven_exist && ! *gradle_exist && ! *maven_daemon_exist) { - chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一"); + chsrc_error ("maven(maven-daemon) 与 gradle 命令均未找到,请检查是否存在其一"); exit (Exit_UserCause); } } +bool +chef_is_home (const char *str) +{ + return (xy_str_start_with (str, "Maven home:")); +} + +char* +pl_java_find_maven_home (const char *source) +{ + if(chef_is_home(source)) + { + char *maven_home = xy_str_delete_prefix (source, "Maven home: "); + } +} char * pl_java_find_maven_config () { - char *buf = xy_run ("mvn -v", 2); - char *maven_home = xy_str_delete_prefix (buf, "Maven home: "); + char *maven_home = xy_run_iter ("mvn -v", 0, pl_java_find_maven_home); + maven_home = xy_str_strip (maven_home); + + char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return maven_config; +} + + +char * +pl_java_find_maven_daemon_config () +{ + char *buf = xy_run_iter ("mvnd -v", 0, pl_java_find_maven_home); + char *maven_home = xy_str_delete_prefix (buf, "Maven daemon home: "); maven_home = xy_str_strip (maven_home); char *maven_config = xy_normalize_path (xy_2strjoin (maven_home, "/conf/settings.xml")); @@ -65,10 +91,18 @@ pl_java_find_maven_config () void pl_java_getsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); - char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); + if (maven_exist) + { + char *maven_config = pl_java_find_maven_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } + if(maven_daemon_exist) + { + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_2strjoin ("请查看 ", maven_config)); + } } @@ -78,8 +112,8 @@ pl_java_getsrc (char *option) void pl_java_setsrc (char *option) { - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); + bool maven_exist, gradle_exist, maven_daemon_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist, &maven_daemon_exist); use_this_source(pl_java); @@ -93,6 +127,16 @@ pl_java_setsrc (char *option) println (file); } + if (maven_daemon_exist) + { + char *file = xy_str_gsub (RAWSTR_pl_java_maven_config, "@1@", source.mirror->code); + file = xy_str_gsub (file, "@name@", source.mirror->name); + file = xy_str_gsub (file, "@url@", source.url); + char *maven_config = pl_java_find_maven_daemon_config (); + chsrc_note2 (xy_strjoin (3, "请在 maven 配置文件 ", maven_config, " 中添加:")); + println (file); + } + if (gradle_exist) { if (maven_exist) br(); diff --git a/src/recipe/menu.c b/src/recipe/menu.c index d96250c..a784aee 100644 --- a/src/recipe/menu.c +++ b/src/recipe/menu.c @@ -132,4 +132,4 @@ chsrc_available_mirrors[] = { /* ------------------------ chsrc 内部实现 ------------------------ */ /* 不要列出 &UpstreamProvider 和 &UserDefinedProvider */ -}; +}; \ No newline at end of file