Java Maven JAXB插件只执行一个执行

Java Maven JAXB插件只执行一个执行,java,maven,jaxb,maven-3,maven-jaxb2-plugin,Java,Maven,Jaxb,Maven 3,Maven Jaxb2 Plugin,我试图从两个XSD模式生成源代码。我的JAXBmaven插件如下所示: <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.8.2</version> <executions> <execu

我试图从两个
XSD
模式生成源代码。我的
JAXB
maven插件如下所示:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.8.2</version>
    <executions>
        <execution>
            <id>GenerateKenexa</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                <schemaIncludes>
                    <include>KenexaXMLConfiguration.xsd</include>
                </schemaIncludes>
                <generatePackage>com.groupgti.onlinetest.kenexa.jaxb</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory>
            </configuration>
        </execution>
        <execution>
            <id>GenerateTalentQ</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                <schemaIncludes>
                    <include>TalentQXMLConfiguration.xsd</include>
                </schemaIncludes>
                <generatePackage>com.groupgti.onlinetest.talentq.jaxb</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/talentq</generateDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

com.sun.tools.xjc.maven2
maven jaxb插件
1.1.1
生殖灌肠
生成
**/jaxb-bindings-kenexa.xml
**/KenexaXMLConfiguration.xsd
GenerateTalentQ
生成
**/jaxb-bindings-talentq.xml
**/TalentQXMLConfiguration.xsd
第一个可以很好地生成。但第二个没有。我在maven输出中看到:

[INFO]——maven jaxb插件:1.1.1:generate(GenerateKenexa)@online.tests.management---
[信息]编译文件:/D:/Projects/GTIWebApplications/gti_online_tests_management/src/main/resources/xsd/KenexaXMLConfiguration.xsd
[信息]将输出写入D:\Projects\gtiWebApplication\gti\u online\u tests\u management\target\generated sources\xjc
[信息]
[信息]---maven jaxb插件:1.1.1:generate(GenerateTalentQ)@online.tests.management---
[信息]文件是最新的

它说文件是最新的,但它们甚至没有生成。可能有什么问题?

首先,我建议为每个xsd
${basedir}/target/generated sources/xjc指定单独的输出文件夹

第二,尝试将其设置为单独的插件条目,不单独执行:

<plugin>
    <groupId>com.sun.tools.xjc.maven2</groupId>
...
<includeSchema>**/KenexaXMLConfiguration.xsd...
...
</plugin>
<plugin>
    <groupId>com.sun.tools.xjc.maven2</groupId>
...
<includeSchema>**/TalentQXMLConfiguration.xsd...
...
</plugin>

com.sun.tools.xjc.maven2
...
**/KenexaXMLConfiguration.xsd。。。
...
com.sun.tools.xjc.maven2
...
**/TalentQXMLConfiguration.xsd。。。
...

我解决了这个问题。我已经将maven
jaxb
插件更改为maven
jaxb2
插件,现在一切正常。现在,我的maven配置如下所示:

<plugin>
    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    <version>0.8.2</version>
    <executions>
        <execution>
            <id>GenerateKenexa</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                <schemaIncludes>
                    <include>KenexaXMLConfiguration.xsd</include>
                </schemaIncludes>
                <generatePackage>com.groupgti.onlinetest.kenexa.jaxb</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory>
            </configuration>
        </execution>
        <execution>
            <id>GenerateTalentQ</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <schemaDirectory>src/main/resources/xsd</schemaDirectory>
                <schemaIncludes>
                    <include>TalentQXMLConfiguration.xsd</include>
                </schemaIncludes>
                <generatePackage>com.groupgti.onlinetest.talentq.jaxb</generatePackage>
                <generateDirectory>${project.build.directory}/generated-sources/talentq</generateDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

org.jvnet.jaxb2.maven2
maven-jaxb2-plugin
0.8.2
生殖灌肠
生成
src/main/resources/xsd
KenexaXMLConfiguration.xsd
com.groupgti.onlinetest.kenexa.jaxb
${project.build.directory}/generated sources/kenexa
GenerateTalentQ
生成
src/main/resources/xsd
TalentQXMLConfiguration.xsd
com.groupgti.onlinetest.talentq.jaxb
${project.build.directory}/generated sources/talentq

对于像我一样在一年后提出这个问题的人:/

这个问题同样存在于maven-jaxb2-plugin中,它可能是0.8.3中的某种bug。 当您将文件生成到同一目录中时,插件“认为”文件已经生成,并跳过第二次执行

我发现为了生成第二次执行,必须设置参数

<forceRegenerate>true</forceRegenerate>
true

在配置部分。

我正在使用jaxb2,但在到达这里时仍然面临问题。我从其他人的答案中将下面的部分添加到配置中,现在它可以工作了。 对于前面的答案,成功的部分应该是:

<generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory>
${project.build.directory}/generated sources/kenexa
还需要一个唯一的执行id

<id>GenerateKenexa</id>
GenerateKenexa
但不同的目录使代码分为两个顶级包,因此我最后使用:

<forceRegenerate>true</forceRegenerate>
true

如果我将这些插件分成不同的插件,则只执行最后一个插件,不执行第一个插件,我的代码也不会编译。我应该在哪里加上这个?没有这样的元素可用。谢谢。同样的问题,同样的解决方案。当使用不同的目录时,您应该不再需要,至少在0.12.1版本的插件中不需要。