Plugins 如何使用maven的jaxb_公共插件

Plugins 如何使用maven的jaxb_公共插件,plugins,maven-2,jaxb,jaxb2-basics,Plugins,Maven 2,Jaxb,Jaxb2 Basics,我正在尝试使用jaxb插件将接口插入到从maven生成类的choice元素中。问题是,我似乎无法从maven那里弄清楚如何这样做,文档中的存储库不清楚,唯一的示例(bellow)不起作用,它似乎忽略了插件(maven报告没有找到它的错误),或者插件没有项目文档中当前列出的所有附加组件: <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2

我正在尝试使用jaxb插件将接口插入到从maven生成类的choice元素中。问题是,我似乎无法从maven那里弄清楚如何这样做,文档中的存储库不清楚,唯一的示例(bellow)不起作用,它似乎忽略了插件(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>

org.jvnet.jaxb2.maven2
maven-jaxb2-plugin
0.6.1
生成
br.com.wonder.nfe.xml
-西芬斯
org.jvnet.jaxb2_commons
基本的
0.4.1.5
我在根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>

maven2-repository.dev.java.net
http://download.java.net/maven/2
maven-repository.dev.java.net
Java.net Maven 1存储库(遗留)
http://download.java.net/maven/1
遗产
跑步可以带来:

设置CmdLine选项“[-Xifins,-eption,/home/administrador/JavaApp/wnfe3/wnfe ejb/target/generated sources/xjc/META-INF/sun jaxb.eption]”时出错


嵌入错误:无法识别的参数-Xifins

我真的不确定这是解决这个问题的“正确”方法,但这就是我所做的。首先,从下载接口插入插件
xjc if ins.jar
(在java.net maven存储库中找不到包含
IfInsertPluginImpl.class
的jar)

然后,在本地存储库中安装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
最后,在plugin部分中添加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>

org.jvnet.jaxb2.maven2
maven-jaxb2-plugin
0.6.2
生成
真的
-西芬斯
org.jvnet.jaxb2_commons
基本的
0.4.1.5
org.jvnet.jaxb2_commons
xjc if-ins
1.0-快照
...
...

正如我所说,这可能不是配置jaxb2插件以使用接口插入插件的最干净的方法,但是,通过这种设置,
生成
目标不会抱怨
-Xifins
扩展。

不幸的是,接口注入插件似乎不再得到很好的支持。事实上,我很难找到下载的JAR

谢天谢地,提供了一种类似的机制,用于向生成的JAXB存根添加接口(请参阅)

JAXB2基本插件在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>

org.jvnet.jaxb2.maven2
提供了一个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>

java.lang.Cloneable

如果不在本地存储库中添加jar,似乎真的没有办法做到这一点,我为此填写了一个问题,谢谢。我同意,我们不应该做这些手动操作,这个jar应该是1。可以在java.net存储库2中找到。应该添加到插件依赖项中。哦,别忘了接受这个答案:)我应该说有人。我不知道该将依赖关系放在哪里,以便将其从wsimport传递到jaxb。@Sionide21您应该打开一个新问题,注释系统不适合回答这个问题。