2017-06-19 12 views
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を使用しています。 私は間違っていますか?

+1

は、パッケージ宣言を確認してください。私はそれが何かデフォルトに残っていると思う。私はjaxb mavenプラグインを使ったことは一度もありませんが、コマンドラインツールでクラスを生成するときは、ターゲットディレクトリとターゲットパッケージ名の両方を指定する必要がありました。 –

+0

コンパイル・フェーズの前にプラグイン・ゴールを明示的に実行してください。例えば。 'maven clean org.jvnet.jaxb2.maven2:generate compile'を実行します。あるいは、 ''タグの中に ' compile'を追加して、 'compile'フェーズを構築するプラグインの目標をバインドしてみてください。 –

+0

私は両方の答えを試しました:generatePackageを設定に追加し、プラグインの目標を別々に実行しました。 –

答えて

2

私はパッケージがgeneratePackageを使用してgenerateDirectory外側で宣言されるべきだと思う:生成されたJavaクラスで

<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</generateDirectory> 
     <generatePackage>com.evol.foo.generated-bar-sources</generatePackage> 
    </configuration> 
    <executions> 
     <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
関連する問題