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

build.sbt配置以使用sbt packageSrc添加外部java文件,java,package,sbt,Java,Package,Sbt,我正在使用sbt xjc插件从XSD文件生成java类。插件在project/target/scala-2.10/xjc目录下生成这些类。 我需要创建两个jar文件,一个包含所有.class文件,另一个包含所有.java源文件。 我能够使用sbt-package生成包含所有.class文件的jar文件,但问题在于sbt-packageSrc,此命令只查找project/src/java文件夹中的文件夹,而不考虑由project/target/scala-2.10/xjc下的sbt-xjc插件生成

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

要知道为什么会发生这种情况,命令
检查树包rc
很有帮助,它还将告诉您要更改什么以包含源代码

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

> 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正在使用
映射
键来了解从何处获取文件

知道我们可以将生成的文件添加到
build.sbt
中的
packageSrc
中的映射中:

import Path.flat

xjcSettings

def xjcSources(base: File) = base ** "*"

mappings in Compile in packageSrc ++= xjcSources((sourceManaged in (Compile, xjc)).value) pair flat

您可以阅读更多有关和自定义/控制结果的信息。

谢谢您的回答。没问题。如果它对你有效,你可能想要接受答案。