<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.1</version>
</dependency>
... ...
</dependencies>
Buildr에서는 compile.with 메소드에 라이브러리 목록을 넘겨주어 의존성을 추가할 수 있습니다.
compile.with 메소드가 받아들이는 의존 라이브러리의 몇가지의 타입이 존재합니다.
1. 아티팩트(artifact) 스펙
위의 메이븐 pom에서 xml 형식으로 지정한 coordinates를 다음의 형식으로 지정합니다.
groupId:artifactId:packaging:classifier:version
* 위의 형식 뿐 아니라 다양한 포맷으로 스펙을 지정할 수 있습니다. 여기를 참조하세요.
이렇게 아티팩트 스펙 형식으로 의존성을 추가하면 Buildr은 메이븐 레포지토리에서 해당 라이브러리를 다운받아 로컬에 설치합니다.
2. 다른 프로젝트
만일 다른 프로젝트의 패키징 결과물에 의존하고 있다면 그 프로젝트를 넘겨주면 됩니다.
3. 파일/디렉토리 경로
로컬에 존재하는 파일/디렉토리의 경로를 지정하여 의존성을 추가할 수 있습니다.
메이븐에서는 로컬 파일을 의존성에 추가하기 위해서 스코프를 system으로 잡고 파일의 절대경로를 지정하였습니다.
<groupId>weblogic</groupId>
<artifactId>weblogic-api</artifactId>
<version>10.0</version>
<scope>system</scope>
<systemPath>C:/bea/weblogic/xxx/wls-api.jar</systemPath>
</dependency>
Buildr에서는 프로젝트에 대한 상대경로 또는 절대경로 모두 가능합니다.
경로 지정시 path_to 메소드를 활용하는 것이 좋습니다.
또한 glob 패턴을 적용하여 파일을 지정할 수 있습니다. 메이븐도 이런게 되면 참 좋겠습니다.
여기서 Rake::FileList를 사용했습니다. FileList 없이 그냥 패턴 문자열을 그대로 compile.with 메소드에 넘겨줄 수도 있습니다. 그러나 그렇게 되면 패턴 문자열이 해석없이 그대로 compile.dependencies에 할당되기 때문에 (단위테스트 등에서) 예상치못한 문제가 발생할 수 있습니다. 그래서 FileList를 통해 패턴을 해석한 뒤에 compile.with에 넘겨주는 것을 권장합니다.
Buildr에서는 놀랍게도 파일뿐 아니라 디렉토리도 의존성에 추가하는게 가능합니다.
다만, 이렇게 디렉토리를 의존성에 추가하고 war로 패키징하게 되면 war에 그 디렉토리가 포함이 됩니다. 이때는 그 디렉토리를 아래처럼 패키지 libs에서 빼주면 됩니다.
compile.with DEPEND_CLASSES
package(:war).libs -= artifacts(DEPEND_CLASSES)
'Build&Deploy > Buildr' 카테고리의 다른 글
Buildr : 리소스 필터링 (0) | 2008.12.09 |
---|---|
Buildr : 파일집합 복사하기 (0) | 2008.12.05 |
Buildr : 파일 집합 선택 (0) | 2008.12.01 |
Buildr : 컴파일 옵션 설정하기 (2) | 2008.11.18 |
Buildr : 기본 프로젝트 디렉토리 레이아웃 변경 (2) | 2008.11.17 |