템플릿 생성 방법 

템플릿 라이센스는 CC0 1.0 을 사용합니다. 

CC0 1.0을 사용하는 것을 권장합니다. 소프트웨어의 템플릿 라이센스는 이른바 ‘공개‘뿐만 아니라 모든 저작권 및 이로인해 발생되는 권리를 포기합니다. 미국 같은 베른 협약이 적용되는 나라에 거주하고 있다면, 저작권은 등록 없이 자동으로 발생합니다. 따라서 라이센스 조건을 선언하지 않으면 사용자는 템플릿을 사용할 법적 권리가 없습니다. 까다로운 것은 MIT 라이선스와 Apache 라이선스와 같은 허용된 라이선스조차도 템플릿 사용자의 소프트웨어에서 당신의 템플릿에 귀속되어야 한다는 것이다. 템플릿의 스니펫에 대한 모든 클레임을 지우려면 공개 도메인과 동등한 국제 CC0에 배포하십시오. ``` Template license ———————— Written in by [other author/contributor lines as appropriate]

To the extent possible under law, the author(s) have dedicated all copyright and related and neighboring rights to this template to the public domain worldwide. This template is distributed without any warranty. See https://creativecommons.org/publicdomain/zero/1.0/. ```

템플릿의 레이아웃 

GitHub 프로젝트가 있을때, Giter8 런타임은 다음의 두가지 경로로 템플릿을 찾아 이동합니다 - 만약 src/main/g8 디렉토리가 있으면, src/main/g8 을 사용됩니다. (src 레이아웃) - 만약 없으면, 상위디렉토리가 그대로 사용됩니다. (root 레이아웃)

src 레이아웃 

템플릿 자체가 sbt 프로젝트인 것이 쉽기 때문에 기본적으로 src 레이아웃이 권장됩니다. 이 방법을 사용하면 sbt 플러그인을 사용하여 로컬 환경에서 템플릿을 테스트하고 GitHub에 push 할 수있게 됩니다. 새 템플릿 프로젝트를 시작하는 가장 쉬운 방법은 제공되는 전용 Giter8 템플릿을 사용하는 것입니다.

$ g8 foundweekends/giter8.g8

이 명령은 src/main/g8 안에 임시 소스가 들어간 sbt프로젝트를 생성합니다. default.properties 라는 Java 프로퍼티 파일이 템플릿 필드 및 기본 값을 정의 합니다.

default.properties 

default.propertiesproject/ 디렉토리 아래 또는 템플릿의 루트에 두는것이 가능합니다. 속성은 간단한 키와 그것을 대채할 값의 쌍으로 이루어져 있습니다.

Giter8 템플릿에 실제 적용하는 것은 Scalasti 로 테이핑되어진 StringTemplate에서 소스파일의 템플릿 필드 $ 로 묶어 씁니다. 구체적인 예로 설명하면 classname이라는 필드는 소스내에서

class $classname$ {

와 같은 형태로 표기됩니다.

이 템플릿 필드는 다른 필드의 기본값을 정의하는데에도 사용할 수 있습니다. 예를 들어, 사용자의 GitHub ID 를 사용하여, URL을 만드는것이 가능합니다.

name = URL Builder
github_id=githubber
developer_url=https://github.com/$github_id$
project_url=https://github.com/$github_id$/$name;format="norm"$

대화 형 모드에서는 다음과 같은 내용이 프롬프트됩니다.

name [URL Builder]: my-proj
github_id [githubber]: n8han
project_url [https://github.com/n8han/my-proj]:
developer_url [https://github.com/n8han]:

name 필드 

name 필드는 Giter8 특수 취급되는 필드이다. 이것은 프로젝트 이름에 사용되어지고, g8 런타임은이 이 name을 사용하여 템플릿이 출력되는 디렉토리를 생성한다. (공백과 대문자 대체된다). name필드가 템플릿 내에 지정되지 않으면, g8은 사용자의 현재 디렉토리에 출력합니다. 두 경우 모두, 템플릿 소스 디렉토리의 출력 디렉토리에 복사된다. 또한 파일 및 디렉토리 이름도 템플릿 확장의 대상이됩니다. 예를 들면 아래와 같습니다.

src/main/g8/src/main/scala/$classname$.scala

package 필드 

package 필드는 만약 정의되어 있으면, 사용자의 소스 패키지 이름으로 처리되게 됩니다. $package$ 와 뒤이어 붙는 이름은 패키지 디렉토리 구조로 전개됩니다. 예를 들어, net.databindernet/databinder 가 됩니다.

verbatim 필드 

verbatim 필드는 만약 정의되어 있으면 띄어쓰기 한칸을 구분자로하는 파일 패턴의 목록 (예 .html .js)으로 정해져있습니다. verbatim 패턴과 일치하는 파일은 String Template 처리에서 제외됩니다.

Maven 속성 

Maven 속성 을 사용하여 Central Maven Repository를 쿼리 할 수 있습니다. 특정 버전을 쓰는것 (그리고 배포마다 템플릿을 업데이트) 대신에 라이브러리 이름 만 쓰고 Giter8가 최신 버전을 Maven Central에서 찾고 설정 하도록 하는 방법이 있습니다.

이 속성의 문법은 maven(groupId, artifactId) 와 같다. 여기서 주의해야 할 점은 Scala 프로젝트는 종종 Scala 버전이 artifact id에 들어가는 형태로 공개되는 것 입니다. 따라서 예를 들어 최신 Unfiltered 라이브러리를 지정하려면 다음과 같이 쓸 필요가 있습니다.

name = My Template Project
description = Creates a giter8 project template.
unfiltered_version = maven(ws.unfiltered, unfiltered_2.11)

root 레이아웃 

실험적인 레이아웃으로 root 레이아웃이라는 것이 있고, 이것은 GitHub 프로젝트의 루트 디렉토리를 템플릿의 루트로 사용 합니다. 그러나, 이 방법도 project 안에 템플릿 필드를 사용할 수 없게되므로 적용 범위는 매우 제한되어 있습니다. sbt 빌드는없는 템플릿이나 필드가 없는 템플릿에 도움이 될지도 모릅니다.