Merge branch 'feat-maven_daemon_support' into dev

# Conflicts:
#	src/recipe/lang/Java.c
#	src/recipe/menu.c
This commit is contained in:
BingChunMoLi 2025-08-18 19:49:32 +08:00
commit 7dfe942973
No known key found for this signature in database
GPG Key ID: E08FCE087CD04CCC
2 changed files with 56 additions and 12 deletions

View File

@ -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,11 +91,19 @@ pl_java_find_maven_config ()
void
pl_java_getsrc (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);
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();