2017-05-01 10 views
1

sbt-xjc 플러그인을 사용하여 QTI XSD (특히 this one)에서 JAXB Java 클래스를 만드는 SBT 프로젝트가 있습니다. My XSD는 MathML에 의존적이며 MathML 클래스와 QTI를 예상대로 생성합니다. 현재 사용중인 xjc 플래그는 -verbose -extension입니다. 내가 MathML을에 대한 종속성과 다른 JAXB 프로젝트를 가지고 하나는 MathML을 클래스를 생성, 그러나SBT 프로젝트에서 생성 된 소스 패키지 디렉토리 제외

- src/main/resources/imsqti_v2p1.xsd 
- target 
    - classes/org 
    - imsglobal/... - Contains QTI .class files 
    - w3_1998/math/mathml/... - Contains MathML .class files 
    - src_managed/main/org 
    - imsglobal/... - Contains generated QTI .java files 
    - w3/_1998/math/mathml/... - Contains MathML .java files 

:

여기 내 디렉토리 트리입니다. 중복 수업을 없애고 싶습니다. MathML JAXB 프로젝트를 생성하여 다른 2 개의 프로젝트에 종속성으로 추가했습니다. SBT에게 MathML 클래스를 포함하지 않는 QTI 자동 생성 JAR을 생성하도록 말할 수 있습니까?

나는 this answer과 비슷한 것을 시도했지만 작동하지 않습니다. MathML 클래스는 여전히 JAR에 포함됩니다.

val mathmlPath = "org/w3/_1998/math/mathml" 
def isInPath(path: String, file: File) = file.getCanonicalPath.startsWith(mathmlPath) 
(managedSources in Compile) := managedSources.value.filterNot(file => isInPath(mathmlPath,file)) 

내가이 작업을 얻기 위해 아래의 어떤을 받아 들일 수 있습니다 :

  1. 구성 SBT-xjc를 MathML을 클래스를 생성하지 않도록 여기에 내 build.sbt에 추가 내 시도이다.
  2. MathML 클래스를 컴파일하지 않도록 sbt를 구성합니다.
  3. sbt가 MathML 클래스를 패키지하지 않도록 구성하십시오.
+0

관리되는 원본을 인쇄하려고 했습니까? 파일에 제외 할 파일이 들어 있습니까? – marios

답변

1

mappings 키를 사용하여 jar의 내용을 정의합니다. 참조 : http://www.scala-sbt.org/0.13/docs/Howto-Package.html 귀하의 경우

, 당신은 build.sbt에서 다음과 같이 설정하여 (항아리에 org/w3_1998/math/mathml으로 그들은 모든 시작 가정) MathML을 파일을 제외 할 수 있습니다 (일부 덜 읽을 수 &)

mappings in (Compile, packageBin) ~= { _.filterNot { 
    case (filePath, pathInJar) => pathInJar.startsWith("org/w3_1998/math/mathml") 
}} 

이하 자세한 정보를 :

mappings in (Compile, packageBin) ~= { _.filterNot(_._2.startsWith("org/w3_1998/math/mathml")) }