Maven实战----多模块开发---缺少Jar包

Maven里面的Jar包经常出现Missing的情况,无外乎几种情况:

1、私服里面没有相应的版本号的Jar包或者Jar包没写版本号

2、Jar包引错了,相应的依赖关系也就错了

3、引入了依赖的Jar包,没被管理起来

第一二个问题解决起来挺简单的,第三个问题对于不理解Maven的还需要解决一番。

其实第三个问题就存在与Maven的<dependencies>节点与
<dependencymanagement>节点。

<dependencies>节点是项目依赖,项目所依赖的Jar包;

<dependencymanagement>节点是多模块Maven项目开发的时候的依赖管理控制的。

在多模块开发的时候,利用项目继承可以将结构信息、部署信息,将共同的依赖放在一个父类中。每个子项目的pom继承父类的pom中的依赖关系。这样就解决了所有的子项目的依赖项统一版本。所以为了项目的正确运行,必须让而在父类中将这些Jar包管理起来,在父项目的pom中定义共同的依赖关系。这就是依赖管理。

来看一下这两个节点的代码:

Project A

<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>maven</groupId>
 <artifactId>A</artifactId>
 <packaging>pom</packaging>
 <name>A</name>
 <version>1.0</version>
 <dependencyManagement>
   <dependencies>
     <dependency>
       <groupId>test</groupId>
       <artifactId>a</artifactId>
       <version>1.2</version>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>b</artifactId>
       <version>1.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>c</artifactId>
       <version>1.0</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>test</groupId>
       <artifactId>d</artifactId>
       <version>1.2</version>
     </dependency>
   </dependencies>
 </dependencyManagement>
</project>

Project B

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>maven</groupId>
  <artifactId>B</artifactId>
  <packaging>pom</packaging>
  <name>B</name>
  <version>1.0</version>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>maven</groupId>
        <artifactId>A</artifactId>
        <version>1.0</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>test</groupId>
        <artifactId>d</artifactId>
        <version>1.0</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>test</groupId>
      <artifactId>a</artifactId>
      <version>1.0</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>test</groupId>
      <artifactId>c</artifactId>
      <scope>runtime</scope>
    </dependency>
  </dependencies>
</project>

区别:

<dependencies>中的jar直接加到项目中,管理的是依赖关系(如果有父pom,子pom,则子pom中只能被动接受父类的版本);<dependencyManagement>主要管理版本,对于子类继承同一个父类是很有用的,集中管理依赖版本不添加依赖关系,对于其中定义的版本,子pom不一定要继承父pom所定义的版本。

时间: 2024-10-12 23:32:16

Maven实战----多模块开发---缺少Jar包的相关文章

转】Maven实战(二)---多模块开发---缺少Jar包

原博文出于:http://blog.csdn.net/liutengteng130/article/details/41611755    感谢! Maven里面的Jar包经常出现Missing的情况,无外乎几种情况: 1.私服里面没有相应的版本号的Jar包或者Jar包没写版本号 2.Jar包引错了,相应的依赖关系也就错了 3.引入了依赖的Jar包,没被管理起来 第一二个问题解决起来挺简单的,第三个问题对于不理解Maven的还需要解决一番. 其实第三个问题就存在与Maven的<dependenc

【Java】SVN下载maven项目到eclipse之后,项目红叉,pom.xml出现Missing artifact fakepath:dubbo:jar:2.8.5等缺少jar包情况

刚入公司,从svn上把代码弄下来之后导入eclipse,一般是maven项目,往往项目都会有红叉.如果排除代码本身问题,一般是jar包没有. 鼠标点开pom.xml文件,在约束那里一般有红叉,鼠标放上去一般会提示Missing artifact fakepath:dubbo:jar:2.8.5等提示,表示本地仓库缺少jar包. 如果本地仓库确实没有,一般点击maven-update project,他会自动去私服下载. 如果你本地仓库已经有了,往往是之前没有下完整的.lastUpdated的ja

maven项目中依赖自定jar包

在开发中经常会出现maven项目需要依赖一个自定义jar包,但是这个jar包并没有在maven仓库中,就会出现打包时找不到jar包的问题,解决办法如下: 在这个模块中,lib下的jar包是我自己定义的,maven仓库中并没有,在pom文件中添加jar包时,做以下处理 这样打包时就能找到包的位置了 原文地址:https://www.cnblogs.com/Zs-book1/p/12299806.html

Eclipse下新建Maven项目、自动打依赖jar包

当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个本地仓库,但可以配置访问很多远程仓库. Eclipse *版本 Eclipse *下载 强烈推荐书籍:Maven实战   许晓斌著.目前是第一版 注意:最新版本的Eclipse代号Mars,已经直接集成了Maven,所以无需安装m2Eclipse插件. Eclipse下新建Maven项目 1.下载Maven安装包 进入M

Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包

转载博客:http://quicker.iteye.com/blog/2319947 有关MAVEN仓库的理解参见:http://blog.csdn.net/wanghantong/article/details/36427433 MAVEN依赖关系中Scope的作用 Java代码   Dependency Scope 在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前依赖项的作用域<scope>可以使用5个值: 在定义项目的依

maven 如何给web项目添加jar包依赖

maven 如何给web项目添加jar包依赖 CreateTime--2018年4月19日19:06:21 Author:Marydon 开发工具:eclipse 1.打开pom.xml文件-->切换到pom.xml视图--> 2.在build标签上,创建dependencies标签,jar包的引入都放到该标签内: 3.查看项目都引用了哪些jar包:src/main/webapp/WEB-INF/lib,然后将下面的jar包一个一个的从maven资源库中http://mvnrepository

Java axis2.jar包详解及缺少jar包错误分析

Java  axis2.jar包详解及缺少jar包错误分析 一.最小开发jar集 axis2 开发最小jar包集: activation-1.1.jar axiom-api-1.2.13.jar axiom-dom-1.2.13.jar axiom-impl-1.2.13.jar axis2-adb-1.6.2.jar axis2-adb-codegen-1.6.2.jar axis2-codegen-1.6.2.jar axis2-java2wsdl-1.6.2.jar axis2-kerne

在 maven 中使用 snapshots 版本的 jar 包

1. 首先需要在 pom.xml 中配置如下的 snapshots 仓库 <repositories> <repository> <id>oss-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots</url> <releases> <enabled>false</enabled> </relea

在Maven中新增自定的jar包

引言: 在软件项目中,Maven提供了一体化的类库管理系统,非常实用.但是,如果新增的类库jar在网络上无法获取到,如何在本地按照Maven的规则添加进来呢?本文将通过一个小例子展示新增过程. 背景介绍: 一个Maven管理的Java项目,提供一个系统级别的POM.xml,其中定义了整个项目使用的类库. 需求: 需要添加一个自定义的类库到当前项目中.假定当前的类库文件名为:abc.jar.. 如何将类库添加进来? 1.  找到当前Maven的Repository类库位置 一般默认情况下,在win