- Picocli๋ Java, Groovy, Kotlin, Scala๋ก CLI๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ํ๋ฐํ ํ๋ ์์ํฌ์ด๋ฉฐ, ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ์ผ๋ก ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๐
- Quarkus๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ํฅ์์ํค๊ณ Picocli ๊ธฐ๋ฐ CLI ํ๋ก์ ํธ ์์ฑ์ ๊ฐ์ํํ์ฌ, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ ์ธ์๋ CLI ๊ฐ๋ฐ์ ํฐ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. โก
- CLI ์ปค๋งจ๋๋
Runnable๋๋Callable<Integer>์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ํ์ค Java ํด๋์ค๋ก ์ ์๋๋ฉฐ,@Command์ด๋ ธํ ์ด์ ์ผ๋ก ์ปค๋งจ๋ ์ด๋ฆ๊ณผ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ค์ ํฉ๋๋ค. ๐ป @Option์ด๋ ธํ ์ด์ ์ ๋ช ์์ ์ธ ํ๋๊ทธ(์:-h,--help)๋ฅผ ๊ฐ์ง ์ธ์๋ฅผ ์ ์ํ๊ณ ,@Parameters๋ ์์น ๊ธฐ๋ฐ ์ธ์๋ฅผ ์ ์ํ๋ฉฐ, ์ด๋ค์ ์๋ ์ธ๋ผ์ธ ๋์๋ง ์์ฑ์ ํ์ฉ๋ฉ๋๋ค. โ- Quarkus ๊ฐ๋ฐ ๋ชจ๋(
quarkus dev)๋ ์ฝ๋ ๋ฐ ์ค์ ๋ณ๊ฒฝ ์ ์๋ ๋ฆฌ๋ก๋ฉ์ ์ง์ํ์ฌ CLI ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ํฌ๊ฒ ๊ฐ์ํํฉ๋๋ค. ๐ - ์ค์ CLI ์ ํ๋ฆฌ์ผ์ด์
์์๋
Callable<Integer>๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๊ณต/์คํจ์ ๋ฐ๋ฅธ ์ข ๋ฃ ์ฝ๋๋ฅผ ๋ฐํํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ฉฐ, ์ฌ๋ฌ ์ปค๋งจ๋ ์ค ๋ฉ์ธ ์ง์ ์ ์@TopCommand๋ก ์ง์ ํ ์ ์์ต๋๋ค. โ - ์๋ธ์ปค๋งจ๋๋ฅผ ํตํด ๋ณต์กํ CLI๋ฅผ ๋ชจ๋ํํ๊ณ ์ฝ๋๋ฅผ ๊ตฌ์กฐํํ ์ ์์ผ๋ฉฐ, ๋ฉ์ธ ์ปค๋งจ๋์
subcommands์์ฑ์ผ๋ก ์๋ธ์ปค๋งจ๋๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ๐งฉ - Quarkus REST Client๋ ์ธํฐํ์ด์ค ๊ธฐ๋ฐ์ผ๋ก REST API ํธ์ถ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ, ์ธ๋ถ ์๋น์ค์์ ์ฐ๋์ ๋งค์ฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ๐
quarkus build๋ช ๋ น์ผ๋ก ์คํ ๊ฐ๋ฅํ JAR ํ์ผ์ ์์ฑํ ์ ์์ผ๋ฉฐ,quarkus build --native๋ช ๋ น๊ณผ GraalVM์ ์ฌ์ฉํ์ฌ JDK ์ค์น ์์ด ์คํ ๊ฐ๋ฅํ ๋ค์ดํฐ๋ธ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๐ฆ- GraalVM ๋ค์ดํฐ๋ธ ๋น๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ถํ์ํ ๋ถ๋ถ์ ์ ๊ฑฐํ์ฌ ์ต์ ํํ์ง๋ง, ๋ฆฌํ๋ ์ ์ฌ์ฉ ์ ์ฃผ์๊ฐ ํ์ํ๋ฉฐ, ํ๋ซํผ๋ณ ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค. ๐ ๏ธ
- LangChain4j Quarkus ํ์ฅ์ ํตํด AI ๋ชจ๋ธ(LLM ํฌํจ)์ CLI์ ์ฝ๊ฒ ํตํฉํ ์ ์์ผ๋ฉฐ,
@RegisterAiService์ด๋ ธํ ์ด์ ์ผ๋ก AI ์๋น์ค ์ธํฐํ์ด์ค๋ฅผ ์ ์ํฉ๋๋ค. ๐ง - Picocli๋
Fileํ์ ๊ณผ ๊ฐ์ ํ๋์ ๋ํ ์๋ ์ปจ๋ฒํฐ๋ฅผ ์ ๊ณตํ์ฌ, ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ต์ ์ผ๋ก ๋ฐ์ ํ์ผ ํธ๋ค๋ง์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฑ ๋ค์ํ ํ์ ๋ณํ์ ์ง์ํฉ๋๋ค. ๐





