7

XSD2 つのスキーマからソースを生成しようとしています。私のJAXBmavenプラグインは次のようになります:

<plugin>
    <groupId>com.sun.tools.xjc.maven2</groupId>
    <artifactId>maven-jaxb-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
        <execution>
            <id>GenerateKenexa</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <includeBindings>
                    <includeBinding>**/jaxb-bindings-kenexa.xml</includeBinding>
                </includeBindings>
                <includeSchemas>
                    <includeSchema>**/KenexaXMLConfiguration.xsd</includeSchema>
                </includeSchemas>
            </configuration>
        </execution>
        <execution>
            <id>GenerateTalentQ</id>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <includeBindings>
                    <includeBinding>**/jaxb-bindings-talentq.xml</includeBinding>
                </includeBindings>
                <includeSchemas>
                    <includeSchema>**/TalentQXMLConfiguration.xsd</includeSchema>
                </includeSchemas>
            </configuration>
        </execution>
    </executions>
</plugin>

最初のものは正常に生成されます。しかし、2番目のものはそうではありません。私はMavenの出力に表示されます:

[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateKenexa) @ online.tests.management ---
[INFO] Compiling file:/D:/Projects/GTIWebApplications/gti_online_tests_management/src/main/resources/xsd/KenexaXMLConfiguration.xsd
[INFO] Writing output to D:\Projects\GTIWebApplications\gti_online_tests_management\target\generated-sources\xjc
[INFO] 
[INFO] --- maven-jaxb-plugin:1.1.1:generate (GenerateTalentQ) @ online.tests.management ---
[INFO] files are up to date

ファイルは最新であると表示されていますが、生成されていません。何が間違っている可能性がありますか?

4

4 に答える 4

19

1年後、私と同じようにこの質問をする人々のために:/

この問題は maven-jaxb2-plugin でも解決されません。おそらく 0.8.3 の何らかのバグです。ファイルを同じディレクトリに生成すると、プラグインはファイルが既に生成されていると「考え」、その 2 回目の実行をスキップします。

2番目の実行を生成するには、引数を設定する必要があることがわかりました

<forceRegenerate>true</forceRegenerate>

構成セクション。

于 2013-04-19T06:28:38.907 に答える
4

私は問題を解決しました。jaxbmavenプラグインを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>
于 2012-08-31T11:33:32.583 に答える
2

ここにたどり着いたとき、まだ問題に直面していましたが、私は jaxb2 を使用しています。他の人の回答から構成に以下の部分を追加しましたが、現在は機能しています。以前の回答では、トリックを行った部分は次のとおりです。

<generateDirectory>${project.build.directory}/generated-sources/kenexa</generateDirectory>

また、一意の実行 ID が必要です

<id>GenerateKenexa</id>

しかし、ディレクトリが異なると、コードが 2 つの最上位パッケージに配置されるため、最終的には以下を使用しています。

<forceRegenerate>true</forceRegenerate>
于 2015-07-30T01:02:31.430 に答える
1

まず、xsd ごとに個別の出力フォルダーを指定することをお勧めします。<outputdirectory>${basedir}/target/generated-sources/xjc</outputdirectory>

次に、個別の実行ではなく、個別のプラグイン エントリとして設定してみてください。

<plugin>
    <groupId>com.sun.tools.xjc.maven2</groupId>
...
<includeSchema>**/KenexaXMLConfiguration.xsd...
...
</plugin>
<plugin>
    <groupId>com.sun.tools.xjc.maven2</groupId>
...
<includeSchema>**/TalentQXMLConfiguration.xsd...
...
</plugin>
于 2012-08-31T10:34:03.180 に答える