การแก้ไขปัญหา
ตรวจสอบการตั้งค่าและรูปแบบโค้ดสนับสนุนตามลำดับเมื่อไม่มีไฟล์ที่สร้างขึ้นหรือขาด route/type
ลำดับการตรวจสอบ
• ตรวจสอบว่า @Profile("local") รวมอยู่ในโปรไฟล์การทำงานจริงหรือไม่.
• ตรวจสอบว่าไม่มีข้อยกเว้นเกิดขึ้นจาก runner.start() ในคอนโซลท้องถิ่น.
• ตรวจสอบว่า rootPath, routerPackage, entityPackage, handlerOutputDir อยู่ในตำแหน่งที่ถูกต้องหลังจากการแปลง dot/slash.
• ตรวจสอบว่า directory แหล่งที่สร้างรวมอยู่ใน IDE และชุดแหล่งที่มาของเครื่องมือสร้างหรือไม่.
• เพิ่มประเภทโมดูลทั่วไปภายนอกใน decompile jar class หรือ source classpath.
• ตรวจสอบว่า RouterFunction เป็นรูปแบบที่รองรับการ route/nest แบบ fluent และการอ้างอิงวิธีการ handler.
dot path และ slash path
Config จะทำการปกติ . เป็น / ในหลายเส้นทางการป้อนข้อมูล แม้ว่าเราจะสามารถใช้สตริงแพ็คเกจและเส้นทางไฟล์ระบบร่วมกันได้ แต่ต้องตรวจสอบความแตกต่างระหว่างการตั้งค่าที่ใส่เส้นทางเอาต์พุตทั้งหมดเช่น src.main.java.com.example... กับการตั้งค่าที่ใส่เฉพาะแพ็คเกจ com.example....
ทำซ้ำการตั้งค่าพาธ
import com.byeolnaerim.watch.route.HandlerGenerator;
var handlerConfig = HandlerGenerator.Config.builder()
.rootPath("src/main/java")
.routerPackage("com.example.web.router")
.handlerPackage("com.example.web.handler")
.handlerOutputDir("src/main/java/com/example/web/handler")
.build();
System.out.println(handlerConfig.routerDir());
// src/main/java/com/example/web/router/เรียกใช้จากรากโปรเจกต์และตรวจว่า routerDir ที่แสดงมีซอร์สของเราเตอร์ หากใส่ src/main/java ใน routerPackage ด้วย พาธจะซ้ำกัน ส่งการตั้งค่านี้ให้ handlerConfig ของ runner แล้วเรียกใช้ด้วยโปรไฟล์ local ตาม Quick Start โดย handlerPackage คือชื่อแพ็กเกจ Java และ handlerOutputDir คือไดเรกทอรีปลายทางจริง
test -d src/main/java/com/example/web/router
find src/main/java/com/example/web/handler -name '*.java'
# Quick Start swaggerOutputFile:
test -s src/main/resources/static/swagger.jsonหากพาธถูกต้องแต่ไม่มีผลลัพธ์ ให้เริ่มตรวจจากข้อยกเว้นแรกของ runner.start() ทำซ้ำด้วยเส้นทางขั้นต่ำหนึ่งเส้นทางที่อ้างอิง handler::method ตรวจไฟล์ที่สร้าง แล้วจึงเพิ่มเส้นทางเดิม การมีไฟล์ swagger.json เพียงอย่างเดียวยังไม่พอ ต้องเทียบพาธคำขอและ HTTP method ใน paths กับสัญญาการตอบกลับจริง
การสร้างใหม่ไม่สิ้นสุด
Swagger writer จะเขียนไฟล์เมื่อมีการเปลี่ยนแปลงเนื้อหาเท่านั้น หากเกิดการสร้างซ้ำ ให้ตรวจสอบว่าไฟล์เอาต์พุตรวมอยู่ใน watchDirectory หรือไม่ และตรวจสอบว่า formatter หรือ watcher อื่น ๆ กำลังเปลี่ยนแปลงแหล่งที่สร้างอยู่หรือไม่.