Maven--->学习心得--->maven的Dependency Mechanism(依赖关系机制)

1.概述:

  dependency management是maven所擅长的东西之一,是maven的特色功能。

  参考资料:1)maven官网documentation

        2)

2.maven的依赖机制

  1)maven中的依赖是可传递的(transitive denpendencies)

        • pom.xml可以继承parent pom.xml
        • 可以自动继承该项目所依赖的三方工程(dependencies)依赖的其他工程
        • 由于maven管理的项目,其依赖是可传递的,所以就容易出现一个问题,那就是依赖有可能形成一个循环(cycle)

  2)dependency scope依赖范围是可控的

      There are 6 scopes available:

        • compile(默认)
          This is the default scope, used if none is specified【指定】. Compile dependencies are available in all classpaths of a project. Furthermore, those dependencies are propagated【传播】 to dependent projects.
        • provided
          This is much like compile, but indicates you expect the JDK or a container to provide the dependency at runtime. For example, when building a web application for the Java Enterprise Edition, you would set the dependency on the Servlet API and related Java EE APIs to scope provided because the web container provides those classes. This scope is only available on the compilation and test classpath, and is not transitive.
        • runtime
          This scope indicates that the dependency is not required for compilation, but is for execution. It is in the runtime and test classpaths, but not the compile classpath.
        • test
          This scope indicates that the dependency is not required for normal use of the application, and is only available for the test compilation and execution phases. This scope is not transitive.
        • system
          This scope is similar to provided except that you have to provide the JAR which contains it explicitly【显式地】. The artifact is always available and is not looked up in a repository.
        • import(only available in Maven 2.0.9 or later)
          This scope is only supported on a dependency of type pom in the <dependencyManagement> section. It indicates the dependency to be replaced with the effective list of dependencies in the specified【指定的】 POM‘s <dependencyManagement> section. Since they are replaced, dependencies with a scope of import do not actually participate in limiting the transitivity of a dependency.

  2)怎么通过maven的pom.xml给自己的project添加external dependencies

时间: 2024-10-07 07:48:27

Maven--->学习心得--->maven的Dependency Mechanism(依赖关系机制)的相关文章

maven学习心得

心得:这几天一直在研究maven的配置,还真是伤心啊,网上资料不多,而且问题不断.确实很让人头疼 背景:之所以学习maven是因为我们需要一键部署,我们项目是已经差不多完成了,是eclipse的web项目,需要将它变成maven项目 问题: 1.拆分项目为多个模块解决循环依赖 如果一个web项目下面有A,B,C三个模块,各个模块互相依赖,这是maven会提示,这是一个循环依赖,而不能正常编译项目. 解决办法:http://hck.iteye.com/blog/1728329 但是建议最好模块分清

Maven学习笔记(四):坐标与依赖

Maven坐标详解: Maven定义了这样一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标的元素包括groupId.artifactId.version.packaging.classifier.我们只需要提供正确的坐标元素,Maven就能找到对应的构件.比如当需要使用Java5平台上的TestNG的5.8版本时,就告诉Maven:"groupId=org.testng; artifactId=testng; version=5.8; classifer=jdk15,

Maven学习笔记(四):协调和依赖

Maven协调具体的解释: Maven定义了这样一组规则:世界上不论什么一个构件都能够使用Maven坐标唯一标识.Maven坐标的元素包含groupId.artifactId.version.packaging.classifier.我们仅仅须要提供正确的坐标元素,Maven就能找到相应的构件.比方当须要使用Java5平台上的TestNG的5.8版本号时,就告诉Maven:"groupId=org.testng; artifactId=testng; version=5.8; classifer

【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包

http://blog.csdn.net/u013177446/article/details/54134394 ****************************************************** 使用maven构建工具可以将工程打包生成普通的jar包.可运行的jar包,也可以将所有依赖一起打包生成jar: 一.普通的jar包 普通的jar包只包含工程源码编译出的class文件以及资源文件,而不包含任何依赖:同时还包括pom文件,说明该包的依赖信息: 在工程pom文件下

Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图

Maven 组件界面介绍 如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有: 第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项目.一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按钮进行项目的重新载入. 第六个按钮:Execute Maven Goal 弹出可执行的 Maven 命令的输入框.有些情况下我们需要通过书写某些执行命令来构建项目,就可以通

Maven学习(1) - Maven入门

home index:http://maven.apache.org/ download:http://maven.apache.org/download.cgi install: http://maven.apache.org/download.cgi#Installation   一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1.1.项目构建 项目构建过程包

Maven学习 七 Maven项目创建(2)war项目

一.web项目的目录结构 如果手动创建一个java  web项目,其基本的目录结构包括:METE-INF,WEB-INF,以及WEB-INF下必须包含一个web.xml文件 二.使用Maven创建war项目 (一) 创建maven project时选择packaging为war (二)在webapp文件夹下新建META-INF和WEB-INF/web.xml 刚创建的项目发现会报错,因为此时的项目没有web项目的目录结构,需要创建一些文件夹和文件,形成web的目录结构,在main/webapp下

maven 学习---使用Maven运行单元测试

要通过Maven运行单元测试,发出此命令: mvn test 这会在你的项目中运行整个单元测试. 案例学习 创建两个单元测试,并通过 Maven 的运行它.参见一个简单的 Java 测试类: package com.yiibai.core; public class App { public static void main(String[] args) { System.out.println(getHelloWorld()); } public static String getHelloW

Maven学习 五 Maven项目创建(1)jar项目

第一步:Maven项目的创建 File->new->Maven project. 点击下一步 上方的两个多选框选上,第一个是不使用archetype 原型模板,第二个是使用默认工作空间 点击next Group ID : 公司名.公司网址倒写 Artifact ID : 项目名 Version : 版本   0.0.1-SNAPSHOT快照版,也可以写成1.0之类的版本号,作用不是很大,只有在以后搭建私服时候有作用 Packaging: 项目的打包方式,也就是指定项目最终会打成什么包,有jar