but*_*ski 4 java xsd jaxb maven jaxb2-maven-plugin
我尝试使用jaxb2-maven-plugin从XSD生成Jaxb类.
我能够在一个包中获取jaxb类,但我的其他包被删除了.这是什么原因?怎么过来这个?请你给个建议.
以下是我的尝试
<bulid>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/xsd</schemaDirectory>
<outputDirectory>src/main/java</outputDirectory>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</bulid>
Run Code Online (Sandbox Code Playgroud)
和xsd看起来像这样:
<?xml version="1.0" encoding="UTF-8"?><xsd:schema targetNamespace="com.test.jaxb.model"
xmlns:ns="com.test.jaxb.model" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="TestResults">
<xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="testSuites" type="Q1:TestSuiteRun"/>
</xsd:sequence>
<xsd:attribute name="testProject" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="TestCaseRun">
<xsd:complexContent>
<xsd:extension base="Q1:TestRun">
<xsd:sequence>
<xsd:element name="result" type="Q1:Severity"/>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="variations" type="Q1:VariationRun">
</xsd:element>
</xsd:sequence>
<xsd:attribute name="variationCount" type="xsd:int"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)
我给了targetNamespace ="com.test.jaxb.model"但是在生成之后我只能看到包名下的jaxb类:model.jaxb.test.com ..
为什么包名称反转,为什么我的其他包被删除?
mab*_*aba 10
你的主要问题是你正在使用src/main/javaas <outputDirectory>.这有两个主要问题.
mvn clean.你应该<outputDirectory>src/main/java</outputDirectory>完全删除,让maven和插件完成他们的工作.
如果删除这些行,您将生成所生成的源,target/generated-sources并且它们将在compile我假设您想要的阶段进行编译.
关于反向包名称,我相信你应该改为targetNamespace:
<xsd:schema targetNamespace="http://www.test.com/jaxb/model"
...
Run Code Online (Sandbox Code Playgroud)
问题解决了 :
<bulid>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/xsd</schemaDirectory>
<outputDirectory>src/main/java</outputDirectory>
<packageName>com.test.jaxb.model</packageName>
<clearOutputDir>false</clearOutputDir>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</bulid>
Run Code Online (Sandbox Code Playgroud)
我从xsd中删除了targetNameSpace
mvn jaxb2:xjc工作!!
| 归档时间: |
|
| 查看次数: |
5842 次 |
| 最近记录: |