`
chimpp55
  • 浏览: 21825 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

maven 实战 - 3

 
阅读更多

第四章 略
第五章
Maven 的坐标:

    <groupId>org.apache.mrunit</groupId>  
    <artifactId>mrunit</artifactId>  
    <version>1.0.0</version>  
    <packaging>jar<packaging>(可选)




Maven的依赖:
   dependences元素


   <dependency> 
            <groupId>org.apache.hadoop</groupId> 
            <artifactId>hadoop-common</artifactId> 
            <version>2.0.0-cdh4.2.1</version> 
            <type>jar</type>  (依赖的类型,默认是jar,一般不用设定)
            <optional>...</optional> (标记依赖是否可选)
            <exclusions>  (排除传递性依赖)
                <exclusion> 
                    <artifactId>kfs</artifactId> 
                    <groupId>net.sf.kosmosfs</groupId> 
                </exclusion> 
            </exclusions> 
            <scope>provided</scope> (依赖的范围)
    </dependency>

依赖范围:
    compile:编译依赖范围,默认该依赖,对编译、测试和运行三种classpath都是有效的
    test:测试依赖范围;
    provided:已提供依赖范围;提供过不会重复提供
    runtime:运行时依赖范围;如JDBC驱动的实现
    system:系统依赖范围

可传递性依赖:
     A->B->C 那么 A->C


一: 依赖范围scope

共5种,compile (编译)、test (测试)、runtime (运行时)、provided、system

不指定,则依赖范围默认为compile.



compile:编译依赖范围,在编译,测试,运行时都需要。

test: 测试依赖范围,测试时需要。编译和运行不需要。如Junit

runtime: 运行时依赖范围,测试和运行时需要。编译不需要。如JDBC驱动包

provided:已提供依赖范围,编译和测试时需要。运行时不需要。如servlet-api

system:系统依赖范围。本地依赖,不在maven中央仓库。





二:依赖的传递

A->B(compile)     第一关系: a依赖b   compile

B->C(compile)     第二关系: b依赖c   compile



当在A中配置

<dependency> 
            <groupId>com.B</groupId> 
            <artifactId>B</artifactId> 
            <version>1.0</version> 
</dependency>

则会自动导入c包。关系传递如下表:

 



 





3.依赖冲突的调节

A->B->C->X(1.0)

A->D->X(2.0)

由于只能引入一个版本的包,此时Maven按照最短路径选择导入x(2.0)



A->B->X(1.0)

A->D->X(2.0)

路径长度一致,则优先选择第一个,此时导入x(1.0)



4.排除依赖

A->B->C(1.0)

此时在A项目中,不想使用C(1.0),而使用C(2.0)

则需要使用exclusion排除B对C(1.0)的依赖。并在A中引入C(2.0).



pom.xml中配置

<!--排除B对C的依赖-->

<dependency> 
            <groupId>B</groupId> 
            <artifactId>B</artifactId> 
            <version>0.1</version> 
            <exclusions>
                 <exclusion>
                    <groupId>C</groupId> 
                    <artifactId>C</artifactId><!--无需指定要排除项目的版本号-->
                 </exclusion>
            </exclusions>
</dependency>

<!---在A中引入C(2.0)-->

<dependency> 
            <groupId>C</groupId> 
            <artifactId>C</artifactId> 
            <version>2.0</version> 
</dependency>



5.依赖关系的查看

cmd进入工程根目录,执行  mvn dependency:tree

会列出依赖关系树及各依赖关系



mvn dependency:analyze    分析依赖关系
    






 

  • 大小: 190.1 KB
分享到:
评论

相关推荐

    Maven使用实战-从入门到精通实践【张振华.Jack】

    Maven使用实战-从入门到精通实践【张振华.Jack】 Maven简介、Maven主要做什么用? 项目对象模型(POM) 坐标(Coordinates)、打包方式(Packaging)、项目描述 项目子父级关系(parent) 依赖管理(dependency),冲突了...

    maven笔记:maven-overlay-实战笔记

    【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...

    Maven 实战(中文pdf)

    《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...

    Maven3实战笔记04Maven的生命周期和插件

    3. **compile**:执行Default生命周期中的`compile`阶段,调用`maven-compiler-plugin`的`compile`目标来编译源代码。 4. **test**:执行Default生命周期中的`test`阶段,调用`maven-surefire-plugin`的`test`目标来...

    Maven 实战(361)_12804356.pdf

    Maven 实战(361)_12804356.pdf

    Maven 实战.pdf-完整版

    Maven的实战性强,意味着在学习和使用过程中,通常会结合大量的实例操作,使读者能更好地理解和掌握Maven的具体应用。本书由许晓斌执笔,是国内首本全面介绍Maven的专著,基于最新的Maven3.0版本编写,详细介绍了...

    Maven-教案-实战.pdf

    Maven-教案-实战.pdf

    maven 实战 所有源代码

    ** Maven实战:所有源代码详解 ** Maven是一款强大的项目管理和构建工具,广泛应用于Java开发领域。它通过一套约定优于配置的原则,简化了项目的构建、依赖管理以及文档生成等工作。本篇文章将深入探讨"Maven实战...

    Maven 实战源码

    《Maven实战源码》是一本专为Java开发者设计的指南,旨在帮助初学者和有经验的开发者深入理解和掌握Maven这一强大的项目管理和构建工具。Maven不仅简化了项目的构建过程,还通过依赖管理和插件机制,使得软件开发...

    maven 详细教程 实战 例子 电子书

    ** Maven 详细教程 实战 例子 电子书 ** Maven 是一个强大的项目管理工具,广泛应用于Java开发领域。它简化了构建、依赖管理和项目生命周期的管理,使得开发者能够更专注于代码本身,而不是构建过程。本教程将深入...

    Maven3实战笔记07继承

    标题:“Maven3实战笔记07继承” 描述:“Maven3实战笔记07——继承的介绍。” Maven作为Java项目管理工具,其强大的功能之一便是支持项目的继承特性,这一特性在构建大型、复杂的多模块项目时显得尤为重要。通过...

    smart-doc官方maven插件smart-doc-maven-plugin-master.zip

    四、实战应用 1. **集成Swagger**:如果项目使用了Swagger注解,只需在配置中开启Swagger模式,Smart Doc会自动识别并生成文档。 2. **自定义模板**:通过提供自己的模板文件,可以调整文档的展示样式,满足个性化...

    Maven 实战(书签版),十分清晰强烈推荐

    Maven 实战(书签版) 影印版,影印规整,十分清晰,强烈推荐!

    maven-definitive-guide

    - **培训目标**:旨在让学员从Maven专家那里直接学习到实战经验和最佳实践。 - **培训方式**:通过交互式的WebEx培训环境,学员可以实时与在线讲师互动。 - **提供的课程**: - MVN-101 Maven Mechanics:为期两天...

    Maven3实战.zip

    《Maven3实战》这本书是Java开发者不可或缺的参考资料,它深入浅出地介绍了Maven这一强大的项目管理和构建工具。在Java开发中,Maven3以其规范化的项目结构、自动化构建和依赖管理等功能,极大地提高了开发效率和...

    10 - 基于Maven-SpringBoot-Dubbo微服务实战

    NULL 博文链接:https://jackyin5918.iteye.com/blog/2405459

    day02Maven-教案-实战(IDEA).pdf

    ### Maven在IDEA中的实战应用 在IntelliJ IDEA这类集成开发环境中,Maven可以更加便捷地管理项目依赖和构建过程。开发人员可以在IDEA中通过图形界面操作Maven的常用命令,并对项目结构和配置文件进行修改。 ### ...

    maven-definitive-guide_zh.pdf

    #### 三、Maven实战案例 - **简单的Maven项目** - 介绍了如何创建一个简单的Maven项目,并进行构建。 - 包括项目对象模型的概念及其重要性。 - 核心概念讲解,如插件和目标、生命周期、坐标、仓库、依赖管理和...

Global site tag (gtag.js) - Google Analytics