22 * SPDX-License-Identifier: GPL-3.0-or-later
33 * ------------------------------------------------------------*/
44
5- def_target (pl_java , "java/maven/mvn/gradle" );
5+ def_target (pl_java , "java/maven/mvn/maven-daemon/mvnd/ gradle" );
66
77void
88pl_java_prelude ()
@@ -20,65 +20,118 @@ pl_java_prelude ()
2020 chef_allow_local_mode (this , CanNot , NULL , NULL );
2121 chef_forbid_english (this );
2222 chef_allow_user_define (this );
23+ chsrc_custom_user_agent ("Maven/3.9.11" );
2324
2425 def_sources_begin ()
25- {& UpstreamProvider , "https://repo1.maven.org/maven2/" , DelegateToUpstream },
26- {& Ali , "https://maven.aliyun.com/repository/public/" , DelegateToMirror },
27- {& Huawei , "https://mirrors.huaweicloud.com/repository/maven/" , DelegateToMirror },
28-
26+ {& UpstreamProvider , "https://repo1.maven.org/maven2/" , DelegateToUpstream },
27+ {& Ali , "https://maven.aliyun.com/repository/public/" , "https://maven.aliyun.com/repository/public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar" },
28+ {& Huawei , "https://mirrors.huaweicloud.com/repository/maven/" , "https://mirrors.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar" },
29+ {& HuaweiCdn , "https://repo.huaweicloud.com/repository/maven/" , "https://repo.huaweicloud.com/repository/maven/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar" },
30+ {& Tencent , "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/" , "https://mirrors.cloud.tencent.com/nexus/repository/maven-public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar" },
2931 // 网易的24小时更新一次
30- {& Netease , "http://mirrors.163.com/maven/repository/maven-public/" , DelegateToMirror }
32+ {& Netease , "http://mirrors.163.com/maven/repository/maven-public/" , "https://mirrors.163.com/maven/repository/maven-public/com/tencentcloudapi/tencentcloud-sdk-java/3.1.1033/tencentcloud-sdk-java-3.1.1033-javadoc.jar" }
3133 def_sources_end ()
3234}
3335
3436
3537void
36- pl_java_check_cmd (bool * maven_exist , bool * gradle_exist )
38+ pl_java_check_cmd (bool * maven_exist , bool * gradle_exist , bool * maven_daemon_exist )
3739{
3840 * maven_exist = chsrc_check_program ("mvn" );
3941 * gradle_exist = chsrc_check_program ("gradle" );
42+ * maven_daemon_exist = chsrc_check_program ("mvnd" );
4043
41- if (! * maven_exist && ! * gradle_exist )
44+ if (! * maven_exist && ! * gradle_exist && ! * maven_daemon_exist )
4245 {
43- chsrc_error ("maven 与 gradle 命令均未找到,请检查是否存在其一" );
46+ chsrc_error ("maven(maven-daemon) 与 gradle 命令均未找到,请检查是否存在其一" );
4447 exit (Exit_UserCause );
4548 }
4649}
4750
51+ bool
52+ pl_java_is_home (const char * str )
53+ {
54+ return (xy_str_start_with (str , "Maven home:" ));
55+ }
56+
57+ bool
58+ pl_java_find_maven_home (const char * line )
59+ {
60+ if (pl_java_is_home (line ))
61+ {
62+ return true;
63+ }
64+ return false;
65+ }
4866
4967char *
5068pl_java_find_maven_config ()
5169{
52- char * buf = xy_run ("mvn -v" , 2 );
53- char * maven_home = xy_str_delete_prefix (buf , "Maven home: " );
54- maven_home = xy_str_strip (maven_home );
70+ char * output ;
71+ int status = xy_run_capture ("mvn -v" , & output );
72+ if (0 == status )
73+ {
74+ char * maven_home_line = xy_run_iter_lines ("mvn -v" , 0 , pl_java_find_maven_home );
75+ char * maven_home = xy_str_delete_prefix (maven_home_line , "Maven home: " );
76+ char * maven_config = xy_normalize_path (xy_2strcat (maven_home , "/conf/settings.xml" ));
77+ return maven_config ;
78+ }
79+ else
80+ {
81+ printf ("no find maven home\n" );
82+ }
83+ return "~/.m2/settings.xml" ;
84+ }
5585
56- char * maven_config = xy_normalize_path (xy_2strcat (maven_home , "/conf/settings.xml" ));
57- return maven_config ;
86+ char *
87+ pl_java_find_maven_daemon_config ()
88+ {
89+ char * output ;
90+ int status = xy_run_capture ("mvnd -v" , & output );
91+ if (0 == status )
92+ {
93+ char * maven_home_line = xy_run_iter_lines ("mvnd -v" , 0 , pl_java_find_maven_home );
94+ char * maven_home = xy_str_delete_prefix (maven_home_line , "Maven home: " );
95+ char * maven_config = xy_normalize_path (xy_2strcat (maven_home , "/conf/settings.xml" ));
96+ return maven_config ;
97+ }
98+ else
99+ {
100+ printf ("no find maven home\n" );
101+ }
102+ return "~/.m2/settings.xml" ;
58103}
59104
60105
61106void
62107pl_java_getsrc (char * option )
63108{
64- bool maven_exist , gradle_exist ;
65- pl_java_check_cmd (& maven_exist , & gradle_exist );
66- char * maven_config = pl_java_find_maven_config ();
67- chsrc_note2 (xy_2strcat ("请查看 " , maven_config ));
109+ bool maven_exist , gradle_exist , maven_daemon_exist ;
110+ pl_java_check_cmd (& maven_exist , & gradle_exist , & maven_daemon_exist );
111+ if (maven_exist )
112+ {
113+ char * maven_config = pl_java_find_maven_config ();
114+ chsrc_note2 (xy_2strcat ("请查看 " , maven_config ));
115+ }
116+ if (maven_daemon_exist )
117+ {
118+ char * maven_config = pl_java_find_maven_daemon_config ();
119+ chsrc_note2 (xy_2strcat ("请查看 " , maven_config ));
120+ }
68121}
69122
70123
124+
71125/**
72126 * @consult https://developer.aliyun.com/mirror/maven
73127 */
74128void
75129pl_java_setsrc (char * option )
76130{
77- bool maven_exist , gradle_exist ;
78- pl_java_check_cmd (& maven_exist , & gradle_exist );
79-
80- chsrc_use_this_source (pl_java );
131+ bool maven_exist , gradle_exist , maven_daemon_exist ;
132+ pl_java_check_cmd (& maven_exist , & gradle_exist , & maven_daemon_exist );
81133
134+ chsrc_use_this_source (pl_java );
82135 if (maven_exist )
83136 {
84137 char * file = xy_str_gsub (RAWSTR_pl_java_maven_config , "@1@" , source .mirror -> code );
@@ -89,6 +142,16 @@ pl_java_setsrc (char *option)
89142 println (file );
90143 }
91144
145+ if (maven_daemon_exist )
146+ {
147+ char * file = xy_str_gsub (RAWSTR_pl_java_maven_config , "@1@" , source .mirror -> code );
148+ file = xy_str_gsub (file , "@name@" , source .mirror -> name );
149+ file = xy_str_gsub (file , "@url@" , source .url );
150+ char * maven_config = pl_java_find_maven_daemon_config ();
151+ chsrc_note2 (xy_strcat (3 , "请在 maven 配置文件 " , maven_config , " 中添加:" ));
152+ println (file );
153+ }
154+
92155 if (gradle_exist )
93156 {
94157 if (maven_exist ) br ();
105168pl_java_resetsrc (char * option )
106169{
107170 pl_java_setsrc (option );
108- }
171+ }
0 commit comments