[英]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.