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);