有人可以帮我解决我的问题吗?
我有两个 Maven 项目 A 和 B。 我希望项目 A 包含我的所有模型类,在项目 B 中我正在使用 Spring WS 创建一个契约优先的 Web 服务。因此,在项目 B 中,我使用 maven-jaxb2-plugin 从我的架构生成类。我的 Web 服务项目(项目 A)中的生成类恰好与我的模型项目(项目 A)中的生成类相同(没有 XML 注释)。
因为我不想在我的 Web 服务项目(项目 B)中出现重复的类,所以我决定让这个项目依赖于模型项目(项目 A),接下来我想要的是,不再生成类webservice 项目,但到模型项目(项目 A)。
您认为没有其他方法可以做到这一点吗?
如果可能的话,有人可以帮我做这件事吗?
项目A
package project.a;
public class Client {
//...
}
项目B
类
package project.b;
public class Compte {
//This class manipulates a Client object
//...
}
JAXB2 Maven 插件
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>xjc</id>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<outputDirectory>src/main/java</outputDirectory>
<packageName>project.a</packageName>
<schemaDirectory>src/main/webapp/WEB-INF/schemas</schemaDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
<plugin>
架构
<element name="client">
<complexType>
<sequence>
<!-- -->
</sequence>
</complexType>
</element>
项目 B spring bean 配置
<bean class="org.springframework.ws.client.core.WebServiceTemplate">
<property name="marshaller" ref="marshaller"/>
<property name="unmarshaller" ref="marshaller"/>
<property name="defaultUri" value="http://localhost:8080/project/" />
</bean>
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="project.a"/>
</bean>
最佳答案
您不必再次重新创建模型类。只需将它们放入项目 A 中,然后将这些 bean 导入到项目 B 中,如下所示:
<import resource="classpath:projectABeanDefinitionFile.xml" />
假设您正在 Compte 类上实现/转到 @XmlRootElement (否则建议阅读类似 here 的教程), 然后将项目B文件更改为:
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound" value="project.b.Compte"/>
</bean>
关于java - 在另一个maven项目中使用JAXB2生成java类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176548/