2015-05-12 32 views
10

Dodałem następujące wtyczki do Maven budować w pom.xmlMaven jaxb2: XJC braku wygenerować kod

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>jaxb2-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>xjc</goal> 
      </goals> 
      <configuration> 
       <extension>true</extension>        
       <clearOutputDir>false</clearOutputDir> 
       <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory> 
       <schemaFiles>myapp.xsd</schemaFiles>               
       <outputDirectory>${basedir}/src/main/java</outputDirectory>   
       <bindingDirectory>src/main/resources/xsd</bindingDirectory>  
       <bindingFiles>myapp-bindings.xjb</bindingFiles> 
      </configuration> 
     </execution> 
    </executions>      

</plugin> 

Poniżej znajduje się błąd kompilacji.

[INFO] Ignored given or default xjbSources [C:\WorkSpace\MyApp\src\main\xjb], since it is not an existent file or directory. 
[INFO] Ignored given or default sources [C:\WorkSpace\MyApp\src\main\xsd], since it is not an existent file or directory. 
[WARNING] No XSD files found. Please check your plugin configuration. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.273s 
[INFO] Finished at: Tue May 12 16:24:26 EDT 2015 
[INFO] Final Memory: 9M/124M 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The requested profile "dev-artifactory" could not be activated because it does not exist. 
[ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.1:xjc (default) on project pml-jasypt-authentication-service: MojoExecutionException: NoSchemasException -> [Help 1] 

Jestem zdezorientowany, dlaczego wtyczka nie odnosi się do ścieżek i plików określonych w konfiguracji.

Odpowiedz

4

miałem ten sam problem dzisiaj, i postanowił go poprzez umieszczenie:

<version>1.6</version> 

sprawie definicji wtyczki (która jest w ogólnym dobrym praktyce do zrobienia)

13

wersji 2.1 zmieniło się jak źródła podano

http://mojo.codehaus.org/jaxb2-maven-plugin/xjc-mojo.html#sources

np

<configuration> 
... 
    <sources> 
    <source>some/explicit/relative/file.xsd</source> 
    <source>/another/absolute/path/to/a/specification.xsd</source> 
    <source>a/directory/holding/xsds</source> 
</sources> 
</configuration> 

Mam cały świat innych problemów, więc trzyma się 1.6, jshark sugerowane jest dobry plan

5

wersja 2.1 ma błąd.

Można użyć <version>2.2</version> z nową składnię:

<configuration> 
... 
    <sources> 
    <source>some/explicit/relative/file.xsd</source> 
    <source>/another/absolute/path/to/a/specification.xsd</source> 
    <source>a/directory/holding/xsds</source> 
</sources> 
</configuration> 

Można wykorzystać <version>1.6</version> ze starą składnią:

<configuration> 
    ... 
    <schemaDirectory>${basedir}/src/main/resources/xsd</schemaDirectory> 
    <schemaFiles>myapp.xsd</schemaFiles> 
</configuration> 
0

Możemy również wykorzystać jak poniżej:

  <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>id1</id> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>src/main/java</outputDirectory> 
         <clearOutputDir>false</clearOutputDir> 
         <packageName>com.subu.xsd.model</packageName> 
         <schemaDirectory>src/main/java/schemadir</schemaDirectory> 
         <schemaFiles>XYZ.xsd</schemaFiles> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
0

Mam to działa, ustawiając wersję kompilatora na JDK 1.8 i jaxb2-maven-plugin wersja będzie działać z minimalnym JDK 1.6 [Link może spaść martwy, jeśli został zmieniony w witrynie]. Na przykład:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.mntq.jaxb.xsd.to.pojo</groupId> 
    <artifactId>XsdToPojo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 


    <build> 
     <finalName>PersistencePoJO</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
      <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>jaxb2-maven-plugin</artifactId> 
      <version>1.5</version> 
      <executions> 
       <execution> 
        <id>xjc</id> 
        <goals> 
         <goal>xjc</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <!-- The package of your generated sources --> 
       <packageName>com.mntq.jaxb.pojo</packageName> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 
</project>