首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - Maven JAXB-2插件具有不同配置的多个方案不会生成类

Java - Maven JAXB-2插件具有不同配置的多个方案不会生成类
EN

Stack Overflow用户
提问于 2016-01-20 16:17:28
回答 3查看 4.2K关注 0票数 2

我们正在将现有的项目从Ant + Eclipse迁移到Maven + IntelliJ IDEA。我目前正在使用JAXBxsd文件生成类。我希望继续当前的项目结构,以便让jaxb2-maven-plugin在特定位置生成类。我有多个方案,并希望在不同的位置生成类。我使用了多个插件执行绑定,以便按照the JAXB-2 Maven plugin site中的说明进行操作。我的问题是只执行第一次执行。在第二次执行中不会生成任何类。以下是我的POM.xml文件相关部分:

代码语言:javascript
复制
<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <id>schema1</id>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                    <configuration>
                        <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory>
                        <schemaFiles>myschema1.xsd</schemaFiles>
                        <packageName>xml</packageName>
                        <outputDirectory>${basedir}/src/main/java/com/example/dor/a</outputDirectory>
                        <arguments>-extension -Xcloneable -Xdefault-value -Xsetters -Xannotate</arguments>
                        <staleFile>${build.directory}/.jaxb-staleFlag-1</staleFile>
                        <clearOutputDir>false</clearOutputDir>
                    </configuration>
                </execution>
                <execution>
                    <id>schema2</id>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                    <configuration>
                        <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory>
                        <schemaFiles>myschema2.xsd</schemaFiles>
                        <packageName>xml</packageName>
                        <outputDirectory>${basedir}/src/main/java/com/example/dor/b</outputDirectory>
                        <arguments>-extension -Xcloneable -Xdefault-value -Xsetters -Xannotate</arguments>
                        <staleFile>${build.directory}/.jaxb-staleFlag-1</staleFile>
                        <clearOutputDir>false</clearOutputDir>
                    </configuration>
                </execution>
            </executions>
</plugin>
EN

回答 3

Stack Overflow用户

发布于 2016-01-20 17:15:47

我将升级到1.6,您将不得不将这两个模式放在不同的包中,以防止在生成的ObjectFactory中发生冲突。下面的代码对我很有效:

代码语言:javascript
复制
<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <id>schema1</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory>
                            <schemaFiles>myschema1.xsd</schemaFiles>
                            <packageName>xml.a</packageName>
                            <outputDirectory>${basedir}/src/main/generated1</outputDirectory>
                            <clearOutputDir>true</clearOutputDir>
                        </configuration>
                    </execution>
                    <execution>
                        <id>schema2</id>
                        <goals>
                            <goal>xjc</goal>
                        </goals>
                        <configuration>
                            <schemaDirectory>${basedir}/src/main/resources/schemes</schemaDirectory>
                            <schemaFiles>myschema2.xsd</schemaFiles>
                            <packageName>xml.b</packageName>
                            <outputDirectory>${basedir}/src/main/generated2</outputDirectory>
                            <clearOutputDir>true</clearOutputDir>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
票数 3
EN

Stack Overflow用户

发布于 2020-06-29 21:02:38

使用2.5.0版插件的更新答案。这将是配置:

代码语言:javascript
复制
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>jaxb2-maven-plugin</artifactId>
  <version>2.5.0</version>
  <executions>

    <execution>
      <id>schema1</id>
      <goals>
        <goal>xjc</goal>
      </goals>
      <configuration>
        <packageName>com.your.package</packageName>
        <sources>
          <source>${project.basedir}/src/main/resources/xsd/sample1/sample1.xsd</source>
        </sources>
        <clearOutputDir>false</clearOutputDir>
      </configuration>
    </execution>

    <execution>
      <id>schema2</id>
      <goals>
        <goal>xjc</goal>
      </goals>
      <configuration>
        <packageName>com.your.package</packageName>
        <sources>
          <source>${project.basedir}/src/main/resources/xsd/sample2/sample2.xsd</source>
        </sources>
        <clearOutputDir>false</clearOutputDir>
      </configuration>
    </execution>

  </executions>
</plugin>

希望它对更新的配置有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2020-10-08 18:30:24

也有同样的问题。

已启用maven的-X选项以查看未执行第二代的原因。

第二代没有运行,因为staleFile是相同的。我必须将具有不同值的参数staleFile添加到两次执行中:

代码语言:javascript
复制
<staleFile>${project.build.directory}/jaxb2/.xjcStaleFlag1</staleFile>

.

代码语言:javascript
复制
<staleFile>${project.build.directory}/jaxb2/.xjcStaleFlag2</staleFile>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34894770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档