Installation (Gradle/Maven)

Kosmos DSL을 프로젝트에 추가하고, 최소 설정으로 첫 페이지를 렌더하는 과정을 정리했습니다.

의존성 추가

Gradle (Groovy)

repositories { mavenCentral() }
dependencies {
  implementation 'net.uneedsoft:kosmos-dsl:0.0.1'
  implementation 'net.uneedsoft:kosmos-spring:0.0.1'
}
버전은 실제 배포 버전에 맞게 업데이트하세요.

Maven

<dependency>
  <groupId>net.uneedsoft</groupId>
  <artifactId>kosmos-dsl</artifactId>
  <version>0.0.1</version>
</dependency>
<dependency>
  <groupId>net.uneedsoft</groupId>
  <artifactId>kosmos-spring</artifactId>
  <version>0.0.1</version>
</dependency>

Spring Boot 최소 설정

# application.yml (예시)
server:
  port: 8080

spring:
  mvc:
    view:
      suffix: .html # 필요 시
  web:
    resources:
      cache:
        period: 3600
logging:
  level:
    root: INFO
    com.example: DEBUG
Tip: Kosmos DSL은 SSR 문자열을 직접 반환하므로, 템플릿 엔진이 필수는 아닙니다. 다만 정적 자원(CSS/JS) 제공과 캐시 정책은 spring.web.resources로 조율하세요.

Controller + Kosmos Page 연결

@Controller
@RequestMapping("/hello")
public class HelloController {
  @GetMapping
  public ResponseEntity<String> hello(RenderContext ctx) {
    return ResponseEntity.ok(new HelloKosmosPage().render(ctx));
  }
}
public class HelloKosmosPage implements HtmlComponent {
  @Override public String render(RenderContext ctx) {
    return El.div().css("container py-5").children(
      El.h1().text("Hello, Kosmos!"),
      El.p().text("첫 페이지 성공"),
      El.a().css("btn btn-primary mt-3")
           .href("/docs/kosmos/foundation")
           .text("Foundation 보기")
    ).render(ctx);
  }
}

빌드 & 실행 프로필

명령 설명 비고
./gradlew bootRun 개발 모드 실행 핫 리로드와 함께 사용 권장
./gradlew build 패키징 테스트 포함
java -jar build/libs/app.jar 실행 운영/스테이징에 적용
--spring.profiles.active=dev 프로필 지정 dev/stage/prod

설치 파이프라인

Add Dependencies Boot Config Page + Controller Run & Verify

주의사항

버전 일치: kosmos-dslkosmos-spring 버전을 일치시켜 충돌을 방지하세요.
템플릿 혼용: 다른 템플릿 엔진과 혼용 시 응답 헤더/인코딩이 충돌할 수 있습니다. 하나의 전략을 유지하세요.
Wrapper: CI/CD에서 Gradle Wrapper 사용을 표준으로 지정하세요.