2012-09-27 3 views
3

내가 일하고있는 프로젝트는 Lift 프레임 워크의 웹 응용 프로그램입니다. 우리는 xsbt web plugin도 사용하고 있습니다. 대다수의 기능을 포함하는 "핵심"프로젝트가 있습니다. 나의 현재 목표는 "핵심"프로젝트에 다른 클래스 경로 리소스 세트를 추가하는 두 개의 "배포"프로젝트를 만드는 것입니다. 문제는 1) "배포"프로젝트를 실행할 수 없거나 2) 실행하도록 설정했지만 필요한 리소스가없는 것처럼 보입니다.SBT 프로젝트에서 리소스를 공유하는 방법

lazy val core = Project("Core", file("core")) 
    .settings(/*some dependencies, resolvers, webSettings */) 

lazy val app1 = Project("App1", file("app1")) 
    .aggregate(core) 
    .settings(/*the same settings as core */) 

lazy val app2 = Project("App2", file("app2")) 
    .aggregate(core) 
    .settings(/*the same settings as core*/) 

그런 다음 app1app2 모두의 디렉토리 구조에서, 나는 src/main/resources/aFileINeed에 파일이 : 나는

을 시도했습니다 무엇

은 여기 내 project/Build.scala의 축소 된 버전입니다. 핵심 응용 프로그램은 class.getResource 접근 방식을 사용하여 클래스 경로에서 파일을로드합니다.

이 문제

내가 container:start를 사용하여 배포 프로젝트 중 하나를 실행하려고하면, 그것은 클래스 경로에서 필요한 파일을 검색하지 않습니다. 또한 src/main/webapp은 기존 디렉토리가 아니며 xsbt 웹 플러그인에서 필요하므로 코어 프로젝트에 해당 폴더가 포함되어 있다고 주장합니다.

이 프로젝트에서 리소스를 "병합"하도록하려면 어떻게해야합니까?Build.scala 프로젝트 정의에서 aggregate 또는 dependsOn을 사용하면 프로젝트를 처리 할 수있을 것이라고 예상했지만 분명히 그렇지 않습니다.

답변

2

이것이 내가하는 일입니다. xsbt - 웹을 사용하는 프로젝트의

unmanagedResourceDirectories in Runtime += globalResources 

:

lazy val globalResources = file("resources") 

그리고 모든 프로젝트의 설정에서 : 나는 다음 변수를 프로젝트의 루트에 글로벌 '자원'디렉토리를 만들고, -plugin하거나 수입 다른 라이브러리는이 솔루션을 사용하면 프로젝트의 잠재적 muliple 자원 디렉토리와을 AfaI있을 것이라는 점을주의 강한

unmanagedResourceDirectories in Compile += globalResources 

을 사용해야합니다 K : 같은 파일을 두 번 정의하면 compile:copy-resources이 화가납니다.

관련 문제