0
私はmanveプロジェクトを持っており、JAXB2プラグインを使用してXSDスキーマからJavaクラスを生成しています。デフォルトでは、クラスはターゲットフォルダに生成されますが、src/main/javaフォルダに生成する必要があります。XSD(JAXB)からJavaを生成するためのデフォルトディレクトリを変更する方法
私は、ライン属性generateDirectoryを追加しようとしました。私が欲しいところクラスが生成されますが、私は他の場所でそれらをインポートすることはできません。ここ
は私のpom.xmlです: <plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<configuration>
<schemaDirectory>src/main/resources/schemas</schemaDirectory>
<generateDirectory>src/main/java/com/evol/foo/generated-bar-sources</generateDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
そして、私のJavaクラス使用して生成されたファイル:
package com.evol.foo.service;
import com.evol.foo.generated-bar-sources; //error: cannot resolve symbol generated
@Component
public class XMLParserService {
//ComplexType cannot be found
public ComplexType parseErrorFile(String filePath) throws JAXBException {
File file = new File(filePath);
JAXBContext jaxbContext = JAXBContext.newInstance(ComplexType.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
ComplexType errFile = (ComplexType)
jaxbUnmarshaller.unmarshal(file);
return errFile;
}
私はIntellij ComunityとJava 8を使用しています。 私は間違っていますか?
は、パッケージ宣言を確認してください。私はそれが何かデフォルトに残っていると思う。私はjaxb mavenプラグインを使ったことは一度もありませんが、コマンドラインツールでクラスを生成するときは、ターゲットディレクトリとターゲットパッケージ名の両方を指定する必要がありました。 –
コンパイル・フェーズの前にプラグイン・ゴールを明示的に実行してください。例えば。 'maven clean org.jvnet.jaxb2.maven2:generate compile'を実行します。あるいは、 ''タグの中に ' compile 'を追加して、 'compile'フェーズを構築するプラグインの目標をバインドしてみてください。 –
私は両方の答えを試しました:generatePackageを設定に追加し、プラグインの目標を別々に実行しました。 –