排除SBT项目中生成的源包目录

时间:2017-05-01 11:26:39

标签: java scala jaxb sbt xjc

我有一个SBT项目,它使用sbt-xjc插件从QTI XSD创建JAXB Java类(特别是this one)。我的XSD依赖于MathML,它可以按预期创建MathML类和QTI类。我目前使用的唯一xjc标志是<img src="$num" class="img-responsive" alt="">

这是我的目录树:

<img src="/opt/lampp/htdocs/my_project/images/my_pic.jpg" class="img-responsive" alt="">

但是,我有另一个依赖于MathML的JAXB项目,并且还生成了MathML类。我想摆脱重复的类。我创建了一个MathML JAXB项目,并将其作为依赖项添加到其他2个项目中。如何告诉SBT创建一个不包含MathML类的QTI autogen JAR?

我尝试了与this answer类似的内容,但它无效。 MathML类仍然包含在JAR中。这是我添加到build.sbt的尝试:

-verbose -extension

我接受以下任何一项工作:

  1. 配置sbt-xjc以不生成MathML类。
  2. 配置sbt以不编译MathML类。
  3. 配置sbt以不打包MathML类。

1 个答案:

答案 0 :(得分:1)

使用mappings键定义jar的内容。请参阅:http://www.scala-sbt.org/0.13/docs/Howto-Package.html

在您的情况下,您可以通过org/w3_1998/math/mathml中的以下设置排除MathML文件(假设它们都以jar中的build.sbt开头):

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")) }