sbt-xjcプラグインを使用してQTI XSD(特にthis one)からJAXB Javaクラスを作成するSBTプロジェクトがあります。私のXSDはMathMLに依存しており、期待通りにMathMLクラスとQTIクラスを作成します。私が現在使用している唯一のxjcフラグは-verbose -extension
です。私はMathMLの上の依存関係を持つ別のJAXBプロジェクトを持っており、その1はまた、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 autogen JARを作成するように指示するにはどうすればよいですか?
this answerと似たようなものを試しましたが、動作しません。 MathMLクラスは依然としてJARに含まれています。ここで私は私のbuild.sbtに追加私の試みです:
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))
私はこの作業を取得するには、以下のいずれかを受け入れるだろう:
- 設定のSBT-XJCをMathMLのクラスを生成しないように。
- MathMLクラスをコンパイルしないようにsbtを設定します。
- MathMLクラスをパッケージ化しないようにsbtを構成します。
管理対象のソースを印刷しようとしましたか?それらには除外したいファイルが入っていますか? – marios