簡體   English   中英

如何使用maven的jaxb_commons插件

[英]How to use jaxb_commons plugins from maven

我正在嘗試使用jaxb插件將接口插入到從maven生成類的choice元素中。 問題是我似乎無法從maven中弄清楚如何這樣做,文檔中的存儲庫並不清楚,唯一的例子(下圖)不起作用,它似乎忽略了插件(maven報告沒有關於沒有找到它的錯誤)或者插件沒有項目文檔中當前列出的所有附加組件:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.6.1</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <generatePackage>br.com.wonder.nfe.xml</generatePackage>
        <args>
            <arg>-Xifins</arg>
        </args>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2_commons</groupId>
                <artifactId>basic</artifactId>
                <version>0.4.1.5</version>
            </plugin>
        </plugins>
    </configuration>
</plugin>

我在根pom中有這些:

<pluginRepositories>
    <pluginRepository>
        <id>maven2-repository.dev.java.net</id>
        <url>http://download.java.net/maven/2</url>
    </pluginRepository>
    <pluginRepository>
        <id>maven-repository.dev.java.net</id>
        <name>Java.net Maven 1 Repository (legacy)</name>
        <url>http://download.java.net/maven/1</url>
        <layout>legacy</layout>
    </pluginRepository>
</pluginRepositories>

運行時給出:

設置CmdLine選項時出錯'[-Xifins,-episode,/ home / adminminrad / JavaApp /wnfe3 / winfe-ejb / target / generator-sources / xjc / MARKA-INF / sun-jaxb.episode]'!

嵌入式錯誤:無法識別的參數-Xifins

不幸的是,看起來接口注入插件不再受到良好支持。 事實上,我無法找到下載的JAR。

值得慶幸的是, JAXB2 Basics插件提供了一種類似的機制,用於向生成的JAXB存根添加接口(請參閱繼承插件 )。

JAXB2 Basics插件可在java.net Maven存儲庫中找到。

使用繼承插件,您的POM將如下所示:

<build>
  <plugins>
    <plugin>
      <groupId>org.jvnet.jaxb2.maven2</groupId>
      <artifactId>maven-jaxb2-plugin</artifactId>
      <version>0.6.2</version>
      <executions>
        <execution>
          <goals>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <extension>true</extension>
        <args>
          <arg>-Xinheritance</arg>
        </args>
        <plugins>
          <plugin>
            <groupId>org.jvnet.jaxb2_commons</groupId>
               <artifactId>jaxb2-basics</artifactId>
               <version>0.5.3</version>
           </plugin>
        </plugins>
      </configuration>
    </plugin>
    ...
  </plugins>
  ...
</build>

繼承插件文檔有一個示例,說明了JAXB綁定的外觀。 為方便起見,我再現了以下示例:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
    jaxb:version="2.1"
    jaxb:extensionBindingPrefixes="inheritance">

    <!-- ... -->

    <xs:complexType name="WillBeMadeCloneableType">
        <xs:annotation>
            <xs:appinfo>
                <inheritance:implements>java.lang.Cloneable</inheritance:implements>
            </xs:appinfo>
        </xs:annotation>
        <!-- ... -->
    </xs:complexType>
    <!-- ... -->
</xs:schema>

我真的不確定這是解決這個問題的“正確”方法,但這就是我所做的。 首先,從https://jaxb2-commons.dev.java.net/interface-insertion/xjc-if-ins.jar下載接口插入插件xjc-if-ins.jar (找不到包含IfInsertPluginImpl.class的jar IfInsertPluginImpl.class在java.net Maven倉庫)。

然后,在本地存儲庫中安裝jar:

mvn install:install-file -DgroupId=org.jvnet.jaxb2_commons \
                         -DartifactId=xjc-if-ins \
                         -Dversion=1.0-SNAPSHOT \
                         -Dpackaging=jar \
                         -Dfile=xjc-if-ins.jar

最后,將jar添加為插件部分中maven-jaxb2-plugin的依賴項:

<build>
  <plugins>
    <plugin>
      <groupId>org.jvnet.jaxb2.maven2</groupId>
      <artifactId>maven-jaxb2-plugin</artifactId>
      <version>0.6.2</version>
      <executions>
        <execution>
          <goals>
            <goal>generate</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <extension>true</extension>
        <args>
          <arg>-Xifins</arg>
        </args>
        <plugins>
          <plugin>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>basic</artifactId>
            <version>0.4.1.5</version>
          </plugin>
        </plugins>
      </configuration>
      <dependencies>
        <dependency>
            <groupId>org.jvnet.jaxb2_commons</groupId>
            <artifactId>xjc-if-ins</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
      </dependencies>
    </plugin>
    ...
  </plugins>
  ...
</build>

正如我所說,這可能不是配置jaxb2插件以使用Interface Insertion Plugin的最簡潔方法,但是,通過此設置, generate目標不會抱怨-Xifins擴展。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM