java - 在另一个maven项目中使用JAXB2生成java类

标签 java spring maven jaxb spring-ws

有人可以帮我解决我的问题吗?

我有两个 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/

相关文章:

spring - 如何在Spring Boot的嵌入式tomcat中展开war?

java.lang.NoClassDefFoundError : twitter4j/TwitterException

java - 在哪里可以找到 Java 中的 Vector 和 Hashtable 文档?

java - Spring 启动: keywords supported for JPA

java 通用问题。为什么这个有效?

maven - Spring boot应用——Tomcat部署

java - Maven 程序集插件模块集源指令不包含任何文件,并且与包含的模块不匹配

java - 如何从弹出窗口转到新 Activity ?

java - 从多行解析java中的输入

java - 2d sprites 中 vbo 的高效使用[opengl/android]