build.sbt配置使用sbt packageSrc添加外部java文件

时间:2014-05-02 21:13:51

标签: java package sbt

我正在使用sbt-xjc插件从XSD文件生成java类。该插件在project/target/scala-2.10/xjc目录下生成这些类。 我需要创建2个jar文件,一个包含所有.class文件,另一个包含所有.java源文件。 我能够使用sbt package生成包含所有.class文件的jar文件,但问题在于sbt packageSrc,此命令仅查找project/src/java folder中的文件夹而不考虑文件这些是由project/target/scala-2.10/xjc下的sbt-xjc插件生成的。我能提供哪些配置可以提供帮助吗?

1 个答案:

答案 0 :(得分:1)

要知道为什么会发生这种情况,命令inspect tree packageSrc会有所帮助,它还会告诉您要更改的内容以包含您的来源。

执行时应该显示如下内容:

> inspect tree packageSrc
[info] compile:packageSrc = Task[java.io.File]
[info]   +-compile:packageSrc::packageConfiguration = Task[sbt.Package$Configuration]
[info]   | +-compile:packageSrc::mappings = Task[scala.collection.Seq[scala.Tuple2[java.io.File, java.lang.String]]]
[info]   | | +-compile:unmanagedSources = Task[scala.collection.Seq[java.io.File]]
[info]   | | +-compile:unmanagedResources = Task[scala.collection.Seq[java.io.File]]
[info]   | | +-compile:unmanagedResourceDirectories = List(/tmp/q-23437043/src/main/resources)
[info]   | | +-*:baseDirectory = /tmp/q-23437043
[info]   | | +-compile:unmanagedSourceDirectories = List(/tmp/q-23437043/src/main/scala, /tmp/q-23437043/src/main/java)

// more stuff but not relevant for us

您可以从那里看到SBT正在使用 mappings 键来了解从哪里获取文件。

知道我们可以将生成的文件添加到packageSrc的{​​{1}}中的映射中:

build.sbt

您可以详细了解MappingsPaths来自定义/控制结果。