Java 如何告诉Maven不要忽略导入的XSD中的名称空间属性?
我使用mojohaus jaxb2 maven插件从xsd模式文件生成Java源代码。我的pom.xml如下所示:Java 如何告诉Maven不要忽略导入的XSD中的名称空间属性?,java,maven,xjc,maven-jaxb2-plugin,jaxb2-maven-plugin,Java,Maven,Xjc,Maven Jaxb2 Plugin,Jaxb2 Maven Plugin,我使用mojohaus jaxb2 maven插件从xsd模式文件生成Java源代码。我的pom.xml如下所示: ... <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>2.5.0</ve
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<id>xjc-1</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>my.first.package.types</packageName>
<sources>
<source>src/main/java/META-INF/wsdl/firstSchema.xsd</source>
</sources>
</configuration>
</execution>
<execution>
<id>xjc-2</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<packageName>my.second.package.types</packageName>
<sources>
<source>src/main/java/META-INF/wsdl/secondSchema.xsd</source>
</sources>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>
</executions>
<configuration>
<outputDirectory>src/main/javagen</outputDirectory>
</configuration>
</plugin>
。。。
org.codehaus.mojo
.
当我运行构建时,从第一个模式生成的源文件也被放入第二个包中。谁能给我解释一下为什么会这样?那是一只虫子还是我遗漏了什么
非常感谢您的任何意见
编辑:
我也尝试了maven-jaxb2-plugin。同样的结果!所以这似乎是generell maven的问题。我对maven-jaxb2-plugin的插件配置如下:
...
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.14.0</version>
<executions>
<execution>
<id>first</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>firstSchema.xsd</include>
</schemaIncludes>
<generatePackage>my.first.package.types</generatePackage>
</configuration>
</execution>
<execution>
<id>second</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaIncludes>
<include>secondSchema.xsd</include>
</schemaIncludes>
<generatePackage>my.second.package.types</generatePackage>
</configuration>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/java/META-INF/wsdl</schemaDirectory>
<generateDirectory>src/main/javagen</generateDirectory>
</configuration>
</plugin>
。。。
org.jvnet.jaxb2.maven2
maven-jaxb2-plugin
0.14.0
第一
生成
firstSchema.xsd
我的.first.package.types
第二
生成
secondSchema.xsd
my.second.package.types
src/main/java/META-INF/wsdl
src/main/javagen
有人有什么想法吗?这开始让我有点恼火了
编辑:
我发现这与某些xsd文件导入了如下文件有关:
<xs:import namespace="http://referenced/namespace"
schemaLocation="referencedSchema.xsd" />
在我看来,Maven似乎忽略了名称空间标记。我怎么能告诉Maven停止那样做 我可以回答很久以前我自己的问题。问题是我们还使用maven jaxws插件从wsdl文件生成web服务。这两个插件实际上都获取底层xsf文件,并为各自的包生成数据结构类。因此,解决方案是从pom中删除jaxb插件。所有XSD只生成一次