一个java项目中Maven Dependencies的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个java项目中Maven Dependencies的作用相关的知识,希望对你有一定的参考价值。

帮你把java文件打成jar包,另外还可以将你所依赖的jar包从远程仓库自动下载,是一个构建项目的好东西。 参考技术A Dependencies,依赖。就是项目中用到的jar包。
一般来说,你的依赖加入后,做maven的任何操作时,都会把依赖存入用户目录 的 .m2/repository 中。 在eclipse中可以看到maven dependence中有依赖的文件。
参考技术B 就是一个项目的依赖

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

【中文标题】在另一个 maven 项目中使用 JAXB2 生成 java 类【英文标题】:Generate java classes with JAXB2 in another maven project 【发布时间】:2014-04-19 23:01:09 【问题描述】:

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

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

【问题讨论】:

现在的做法有问题吗? 当我尝试运行项目 B 时出现类似 org.springframework.oxm.UncategorizedMappingException: Unknown JAXB exception; nested exception is javax.xml.bind.JAXBException: class project.b.Compte nor any of its super class is known to this context. 的错误,我更新了我的问题并添加了部分 Spring bean 配置文件 你能从你的两个类中粘贴更多代码吗? 【参考方案1】:

您不必再次重新创建模型类。只需将它们放在项目 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>

【讨论】:

感谢您回答我,但这对我不起作用。因为我不得不处理延迟,所以我会采用重复课程的方式,然后再尝试优化。也谢谢你@soulcheck

以上是关于一个java项目中Maven Dependencies的作用的主要内容,如果未能解决你的问题,请参考以下文章

求教java maven项目打包引入的问题,求大神解答

一个java项目中Maven Dependencies的作用

已经搭建好java项目,如何直接将maven本地仓库中的所有jar通过pom直接引入

Java项目的maven是做啥的?

java中的maven是干啥的?

java maven项目跟web项目区别