diff --git a/src/main/java/org/jcnc/snow/pkg/dsl/CloudDSLParser.java b/src/main/java/org/jcnc/snow/pkg/dsl/CloudDSLParser.java index 5c61337..301e11d 100644 --- a/src/main/java/org/jcnc/snow/pkg/dsl/CloudDSLParser.java +++ b/src/main/java/org/jcnc/snow/pkg/dsl/CloudDSLParser.java @@ -19,13 +19,14 @@ import java.util.regex.Pattern; *
sectionName { 开始,以 } 结束key = value 赋值,行尾可有 # 注释. 展平,例如 compile.enabled = true"value" 或 'value' 形式的字面量自动去引号,调用方得到的均是不含引号的裸字符串
* 示例 .cloud 文件片段:
* project {
* group = com.example
- * artifact = demo
+ * artifact = "demo-app"
* version = 1.0.0
* }
*
@@ -34,19 +35,25 @@ public final class CloudDSLParser {
/** 匹配 sectionName { 的行 */
private static final Pattern SECTION_HEADER = Pattern.compile("^(\\w+)\\s*\\{\\s*$");
- /** 匹配 key = value 行,忽略行尾注释 */
- private static final Pattern KEY_VALUE = Pattern.compile("^(\\w+)\\s*=\\s*([^#]+?)\\s*(?:#.*)?$");
+
+ /**
+ * 匹配 key = value 行,忽略行尾注释。
+ * 使用非贪婪匹配 .*?,确保 value 内部允许出现空格或 =。
+ */
+ private static final Pattern KEY_VALUE = Pattern.compile("^(\\w+)\\s*=\\s*(.*?)\\s*(?:#.*)?$");
+
/** 匹配仅为 } 的行 */
private static final Pattern BLOCK_END = Pattern.compile("^}\\s*$");
- /** 私有构造方法,工具类禁止实例化 */
+ /** 工具类禁止实例化 */
private CloudDSLParser() {}
/**
* 解析指定 .cloud 文件为 {@link Project} 对象。
*