Java 多模式的 maven-jaxb2-plugin VS jaxb2-maven-plugin
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22543155/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
maven-jaxb2-plugin VS jaxb2-maven-plugin for multiple schemas
提问by Tinou
I have multiple xsd schemas that I want to unmarshall into different packages under the samefolder target/generated-sources/xjc
. I tried both plugins and both seem to work fine with these 2 configurations but in case of maven-jaxb2-plugin the eclipse plugin keeps generating classes indefinitely (because of the forceRegenerate
= true) but if I don't specify forceRegenerate it won't generate the second and third set of classes at all when I run mvn clean package
Are there any issues with my configuration?
我有多个 xsd 模式,我想将它们解组到同一文件夹下的不同包中target/generated-sources/xjc
。我尝试了这两个插件,并且这两个配置似乎都可以正常工作,但是在 maven-jaxb2-plugin 的情况下,eclipse 插件会无限期地生成类(因为forceRegenerate
= true)但是如果我不指定 forceRegenerate 它不会生成运行时mvn clean package
根本没有第二组和第三组类我的配置有任何问题吗?
jaxb2-maven-plugin
jaxb2-maven-插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>xjc-scores</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.scores</packageName>
<schemaDirectory>src/main/resources/schemas/scores</schemaDirectory>
</configuration>
</execution>
<execution>
<id>xjc-videos-ramp</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.ramp</packageName>
<schemaDirectory>src/main/resources/schemas/ramp</schemaDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
<execution>
<id>xjc-schedules</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.schedules</packageName>
<schemaDirectory>src/main/resources/schemas/schedules</schemaDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
<configuration>
</configuration>
</plugin>
maven-jaxb2-plugin
maven-jaxb2-plugin
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.8.3</version>
<executions>
<execution>
<id>xjc-scores</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generatePackage>com.generated.scores</generatePackage>
<schemaDirectory>src/main/resources/schemas/scores</schemaDirectory>
<removeOldOutput>true</removeOldOutput>
</configuration>
</execution>
<execution>
<id>xjc-ramp</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generatePackage>com.generated.ramp</generatePackage>
<schemaDirectory>src/main/resources/schemas/ramp</schemaDirectory>
<removeOldOutput>false</removeOldOutput>
</configuration>
</execution>
<execution>
<id>xjc-schedules</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generatePackage>com.generated.schedules</generatePackage>
<schemaDirectory>src/main/resources/schemas/schedules</schemaDirectory>
<removeOldOutput>false</removeOldOutput>
</configuration>
</execution>
</executions>
<configuration>
<forceRegenerate>true</forceRegenerate>
</configuration>
</plugin>
and the build-helper-maven-plugin config:
和 build-helper-maven-plugin 配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/xjc</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-resource</id>
<phase>generate-sources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>target/generated-sources/xjc</directory>
<targetPath>target/classes</targetPath>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
采纳答案by lexicore
General advice: specify your packages in bindings.xjb
rather than in different executions with individual generatePackage
s.
一般建议:bindings.xjb
在单个generatePackage
s中而不是在不同的执行中指定您的包。
<jxb:bindings schemaLocation="common1.xsd" node="/xsd:schema">
<jxb:schemaBindings>
<jxb:package name="mypackage.commonclasses"/>
</jxb:schemaBindings>
</jxb:bindings>
generatePackage
does not really work well with multiple schemas.
generatePackage
不适用于多个模式。
And please file a bug in
并请提交一个错误
https://java.net/jira/browse/MAVEN_JAXB2_PLUGIN
https://java.net/jira/browse/MAVEN_JAXB2_PLUGIN
citing the problem with the multiple schemas and Eclipse. I'll take a look into it.
引用多个模式和 Eclipse 的问题。我会研究一下。
ps. SO disclaimer: I'm the author of maven-jaxb2-plugin
.
附:所以免责声明:我是maven-jaxb2-plugin
.
回答by YRabl
My solution:
我的解决方案:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>xjc-scores</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.scores</packageName>
<schemaDirectory>src/main/resources/schemas/scores</schemaDirectory>
<clearOutputDir>true</clearOutputDir>
</configuration>
</execution>
<execution>
<id>xjc-videos-ramp</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.ramp</packageName>
<schemaDirectory>src/main/resources/schemas/ramp</schemaDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
<execution>
<id>xjc-schedules</id>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>com.generated.schedules</packageName>
<schemaDirectory>src/main/resources/schemas/schedules</schemaDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>