有人可以帮我解决我的问题吗?
我有两个maven项目A和B. 我希望项目A包含我的所有模型类,而在项目B中我正在使用Spring WS创建一个契约优先的Web服务。所以在项目B中,我使用maven-jaxb2-plugin从我的模式生成类。碰巧我的webservice项目(项目A)中的生成类与我的模型项目(项目A)中的生成类相同(没有XML注释)。
因为我不希望在我的Web服务项目(项目B)中有重复的类,所以我决定让这个项目依赖于模型项目(项目A)以及我想要的下一步,而不是再生成类webservice项目,但是模型项目(项目A)。
你认为没有其他方法可以做到这一点吗?
如果有可能,有人可以帮助我这样做吗?
package project.a;
public class Client {
//...
}
package project.b;
public class Compte {
//This class manipulates a Client object
//...
}
<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>
<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>
答案 0 :(得分:0)
您不必再次重新创建模型类。只需将它们放在项目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>