diff --git a/include/source.h b/include/source.h index 81097d1..0d796c3 100644 --- a/include/source.h +++ b/include/source.h @@ -141,17 +141,6 @@ pl_rust_sources[] = { }, -/** - * @time 2024-04-18 更新 - * @note 缺少教育网或开源社区软件源 - */ -pl_java_sources[] = { - {&Upstream, NULL}, - {&Ali, "https://maven.aliyun.com/repository/public/"}, - {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/"}, - {&Netease, "http://mirrors.163.com/maven/repository/maven-public/"} // 网易的24小时更新一次 -}, - /** * @time 2023-09-10 更新 @@ -758,7 +747,7 @@ wr_tex_sources[] = { def_sources_n(pl_rust); -def_sources_n(pl_java); def_sources_n(pl_clojure); +def_sources_n(pl_clojure); def_sources_n(pl_dotnet); def_sources_n(pl_dart); def_sources_n(pl_haskell); def_sources_n(pl_ocaml); def_sources_n(pl_r); def_sources_n(pl_julia); diff --git a/src/chsrc.c b/src/chsrc.c index 9b51b83..f8aab40 100644 --- a/src/chsrc.c +++ b/src/chsrc.c @@ -29,6 +29,7 @@ #include "recipe/lang/php.c" #include "recipe/lang/lua.c" #include "recipe/lang/go.c" +#include "recipe/lang/java.c" void @@ -78,86 +79,6 @@ pl_dotnet_setsrc (char *option) -void -pl_java_check_cmd (bool *maven_exist, bool *gradle_exist) -{ - *maven_exist = chsrc_check_program ("mvn"); - *gradle_exist = chsrc_check_program ("gradle"); - - if (! *maven_exist && ! *gradle_exist) - { - chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一"); - exit (Exit_UserCause); - } -} - -char * -pl_java_find_maven_config () -{ - char *buf = xy_run ("mvn -v", 2, NULL); - char *maven_home = xy_str_delete_prefix (buf, "Maven home: "); - maven_home = xy_str_strip (maven_home); - - char *maven_config = xy_uniform_path (xy_2strjoin (maven_home, "/conf/settings.xml")); - return 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)); -} - -/** - * Java 换源,参考:https://developer.aliyun.com/mirror/maven - */ -void -pl_java_setsrc (char *option) -{ - bool maven_exist, gradle_exist; - pl_java_check_cmd (&maven_exist, &gradle_exist); - - SourceInfo source; - chsrc_yield_source (pl_java); - chsrc_confirm_source (&source); - - if (maven_exist) - { - const char *file = xy_strjoin (7, - "\n" - " ", source.mirror->code, "\n" - " *\n" - " ", source.mirror->name, "\n" - " ", source.url, "\n" - ""); - - char *maven_config = pl_java_find_maven_config (); - chsrc_note2 (xy_strjoin (3, "请在您的 maven 配置文件 ", maven_config, " 中添加:")); - puts (file); - } - - if (gradle_exist) - { - if (maven_exist) puts (""); - const char* file = xy_strjoin (3, - "allprojects {\n" - " repositories {\n" - " maven { url '", source.url, "' }\n" - " mavenLocal()\n" - " mavenCentral()\n" - " }\n" - "}"); - - chsrc_note2 ("请在您的 build.gradle 中添加:"); - puts (file); - } - chsrc_say_lastly (&source, ChsrcTypeManual); -} - - void pl_clojure_setsrc (char *option) @@ -1891,7 +1812,7 @@ wr_anaconda_setsrc (char *option) /************************************** Begin Target Matrix ****************************************/ -def_target(pl_rust); def_target(pl_java); def_target(pl_dart); def_target(pl_ocaml); +def_target(pl_rust); def_target(pl_dart); def_target(pl_ocaml); def_target(pl_r); def_target(pl_julia); def_target_noget (pl_clojure); def_target_noget (pl_dotnet); diff --git a/src/recipe/lang/java.c b/src/recipe/lang/java.c new file mode 100644 index 0000000..838b0a6 --- /dev/null +++ b/src/recipe/lang/java.c @@ -0,0 +1,102 @@ +/** ------------------------------------------------------------ + * SPDX-License-Identifier: GPL-3.0-or-later + * ------------------------------------------------------------- + * Contributors : Aoran Zeng + * Created on : <2023-09-30> + * Last modified : <2024-08-09> + * ------------------------------------------------------------*/ + +/** + * @time 2024-04-18 更新 + * @note 缺少教育网或开源社区软件源 + */ +static SourceInfo +pl_java_sources[] = { + {&Upstream, NULL}, + {&Ali, "https://maven.aliyun.com/repository/public/"}, + {&Huawei, "https://mirrors.huaweicloud.com/repository/maven/"}, + {&Netease, "http://mirrors.163.com/maven/repository/maven-public/"} // 网易的24小时更新一次 +}; +def_sources_n(pl_java); + + +void +pl_java_check_cmd (bool *maven_exist, bool *gradle_exist) +{ + *maven_exist = chsrc_check_program ("mvn"); + *gradle_exist = chsrc_check_program ("gradle"); + + if (! *maven_exist && ! *gradle_exist) + { + chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一"); + exit (Exit_UserCause); + } +} + +char * +pl_java_find_maven_config () +{ + char *buf = xy_run ("mvn -v", 2, NULL); + char *maven_home = xy_str_delete_prefix (buf, "Maven home: "); + maven_home = xy_str_strip (maven_home); + + char *maven_config = xy_uniform_path (xy_2strjoin (maven_home, "/conf/settings.xml")); + return 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)); +} + +/** + * Java 换源,参考:https://developer.aliyun.com/mirror/maven + */ +void +pl_java_setsrc (char *option) +{ + bool maven_exist, gradle_exist; + pl_java_check_cmd (&maven_exist, &gradle_exist); + + SourceInfo source; + chsrc_yield_source (pl_java); + chsrc_confirm_source (&source); + + if (maven_exist) + { + const char *file = xy_strjoin (7, + "\n" + " ", source.mirror->code, "\n" + " *\n" + " ", source.mirror->name, "\n" + " ", source.url, "\n" + ""); + + char *maven_config = pl_java_find_maven_config (); + chsrc_note2 (xy_strjoin (3, "请在您的 maven 配置文件 ", maven_config, " 中添加:")); + puts (file); + } + + if (gradle_exist) + { + if (maven_exist) puts (""); + const char* file = xy_strjoin (3, + "allprojects {\n" + " repositories {\n" + " maven { url '", source.url, "' }\n" + " mavenLocal()\n" + " mavenCentral()\n" + " }\n" + "}"); + + chsrc_note2 ("请在您的 build.gradle 中添加:"); + puts (file); + } + chsrc_say_lastly (&source, ChsrcTypeManual); +} + +def_target(pl_java);