`

Maven 依赖

 
阅读更多

1.依赖的配置

<dependencies>
  	<dependency>
  		<groupId>com.iteye.xujava</groupId>
  		<artifactId>project name</artifactId>
  		<version>1.0.0</version>
  		<!-- 前三个为依赖的基本坐标 -->
  		<type><!-- 依赖的类型 ,对应项目坐标定义的packaging,默认为jar --></type>
  		<scope><!-- 依赖范围 --></scope>
  		<optional><!-- 标记依赖是否可选 --></optional>
  		<exclusions><!-- 用来排除传递性依赖 -->
  			<exclusion>
  			</exclusion>
  		</exclusions>
  	</dependency>
<dependencies>

 

2.依赖的范围

compile:编译依赖范围

test:测试依赖范围

provided:已提供依赖范围,对于编译和测试有效,但在运行时无效,典型例子servlet-api,编译和测试时需要,运行时,容器已提供。

runtime:运行时依赖范围,典型例子是JDBC驱动。

system:系统依赖范围,和provided依赖范围一致。但使用system依赖时必须通过systemPath元素显示地指定依赖文件的路径。由于此类依赖不是通过Maven仓库解析的,而且往往与本机系统绑定,可能造成构建的不可移植。systemPath元素可以引用环境变量,如:

<dependency>
    <groupId>javax.sql</groupId>
    <artifactId>jdbc-stdext</artifactId>
    <version>2.0</version>
    <scope>system</scope>
    <systemPath>${java.home}/lib/rt.jar</systemPath>
</dependency>

 import:导入依赖范围,该依赖范围不会对三种classpath产生实际的影响。

 

3.传递性依赖

依赖范围影响传递性依赖
  compile test provided runtime
compile compile - - runtime
test test - - test
provided provided - provided provided
runtime runtime - - runtime

4.依赖调解

5.可选依赖,可选依赖不被传递

<dependencies>
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.10</version>
  		<optional>true</optional>
  	</dependency>
  	<dependency>
  		<groupId>postgresql</groupId>
  		<artifactId>postgresql</artifactId>
  		<version>8.4-701.jdbc3</version>
  		<optional>true</optional>
  	</dependency>
  </dependencies>

 

6.排除传递性依赖,如test1依赖于test2的1.0.0版,而工程想引入test2的1.1.0版

<dependencies>
  	<dependency>
  		<groupId>com.iteye.xujava</groupId>
  		<artifactId>test1</artifactId>
  		<version>1.0.0</version>
  		<exclusions>
  			<exclusion>
  				<groupId>com.iteye.xujava</groupId>
  				<artifactId>test2</artifactId>
  			</exclusion>
  		</exclusions>
  	</dependency>
  	<dependency>
  		<groupId>com.iteye.xujava</groupId>
  		<artifactId>test2</artifactId>
  		<version>1.1.0</version>
  	</dependency>
  </dependencies>

 

7.归类依赖,即定义常量,避免重复。如下面POM中Spring的版本号

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.iteye.xujava</groupId>
  <artifactId>account-email</artifactId>
  <version>1.0.0</version>
  <packaging>jar</packaging>

  <name>account-email</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <springframework.version>2.5.6</springframework.version>
  </properties>

  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>${springframework.version}</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-beans</artifactId>
  		<version>${springframework.version}</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>${springframework.version}</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context-support</artifactId>
  		<version>${springframework.version}</version>
  	</dependency>
  	<dependency>
  		<groupId>javax.mail</groupId>
  		<artifactId>mail</artifactId>
  		<version>1.4.1</version>
  	</dependency>
  	<dependency>
  		<groupId>com.icegreen</groupId>
  		<artifactId>greenmail</artifactId>
  		<version>1.3.1b</version>
  		<scope>test</scope>
  	</dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.9</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

 

8.优化依赖

mvn dependency:list

E:\mavenspace\account-email>mvn dependency:list
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building account-email 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.1:list (default-cli) @ account-email ---
[INFO]
[INFO] The following files have been resolved:
[INFO]    aopalliance:aopalliance:jar:1.0:compile
[INFO]    com.icegreen:greenmail:jar:1.3.1b:test
[INFO]    commons-logging:commons-logging:jar:1.1.1:compile
[INFO]    javax.activation:activation:jar:1.1:compile
[INFO]    javax.mail:mail:jar:1.4.1:compile
[INFO]    junit:junit:jar:4.9:test
[INFO]    org.hamcrest:hamcrest-core:jar:1.1:test
[INFO]    org.slf4j:slf4j-api:jar:1.3.1:test
[INFO]    org.springframework:spring-beans:jar:2.5.6:compile
[INFO]    org.springframework:spring-context:jar:2.5.6:compile
[INFO]    org.springframework:spring-context-support:jar:2.5.6:compile
[INFO]    org.springframework:spring-core:jar:2.5.6:compile
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.079s
[INFO] Finished at: Sat Jun 15 20:24:06 CST 2013
[INFO] Final Memory: 7M/107M
[INFO] ------------------------------------------------------------------------

 

mvn dependency:tree

E:\mavenspace\account-email>mvn dependency:tree
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building account-email 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ account-email ---
[INFO] com.iteye.xujava:account-email:jar:1.0.0
[INFO] +- org.springframework:spring-core:jar:2.5.6:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] +- org.springframework:spring-beans:jar:2.5.6:compile
[INFO] +- org.springframework:spring-context:jar:2.5.6:compile
[INFO] |  \- aopalliance:aopalliance:jar:1.0:compile
[INFO] +- org.springframework:spring-context-support:jar:2.5.6:compile
[INFO] +- javax.mail:mail:jar:1.4.1:compile
[INFO] |  \- javax.activation:activation:jar:1.1:compile
[INFO] +- com.icegreen:greenmail:jar:1.3.1b:test
[INFO] |  \- org.slf4j:slf4j-api:jar:1.3.1:test
[INFO] \- junit:junit:jar:4.9:test
[INFO]    \- org.hamcrest:hamcrest-core:jar:1.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.185s
[INFO] Finished at: Sat Jun 15 20:25:16 CST 2013
[INFO] Final Memory: 7M/107M
[INFO] ------------------------------------------------------------------------

 

mvn dependency:analyze

E:\mavenspace\account-email>mvn dependency:analyze
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building account-email 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-dependency-plugin:2.1:analyze (default-cli) @ account-email >>>

[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ account-em
ail ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ account-email
 ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ ac
count-email ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory E:\mavenspace\account-email\src\test\
resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ accou
nt-email ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< maven-dependency-plugin:2.1:analyze (default-cli) @ account-email <<<

[INFO]
[INFO] --- maven-dependency-plugin:2.1:analyze (default-cli) @ account-email ---

[WARNING] Unused declared dependencies found:
[WARNING]    org.springframework:spring-core:jar:2.5.6:compile
[WARNING]    org.springframework:spring-beans:jar:2.5.6:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.150s
[INFO] Finished at: Sat Jun 15 20:25:53 CST 2013
[INFO] Final Memory: 8M/107M
[INFO] ------------------------------------------------------------------------

 

 

 

分享到:
评论

相关推荐

    maven依赖小例子

    在这个名为“maven依赖小例子”的源码中,你可以看到如何实际配置和使用Maven依赖的示例。通过分析源码,你可以更好地理解Maven POM.xml文件的结构和依赖管理的工作方式。在实际开发中,熟练掌握Maven依赖管理不仅能...

    maven依赖+继承+聚合

    首先,我们来讨论"Maven依赖"。在Java开发中,一个项目往往需要引用其他库或者框架来完成特定功能。Maven通过在`pom.xml`文件中声明依赖(dependencies)来管理这些外部库。依赖声明包括groupId、artifactId和...

    doris-1.1.3源码编译broker-maven依赖包repository

    《Doris 1.1.3 源码编译 Broker Maven 依赖包 Repository 深度解析》 Apache Doris 是一个高性能、分布式、在线分析处理(OLAP)的数据仓库系统,它提供了快速的数据查询能力,适用于大规模数据的实时分析。在Doris...

    maven依赖包(用于博客项目)

    本资源“maven依赖包(用于博客项目)”显然包含了一系列与博客项目相关的Maven依赖,这些依赖可能包括数据库连接库、模板引擎、日志框架、安全组件以及其他有助于构建博客平台的Java库。 1. **Maven仓库**: ...

    springboot maven 依赖包3

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.

    dubbox 2.8.4 版本 maven 依赖

    附件为:dubbox2.8.4 maven依赖文件。 使用方法:按照依赖关系,自行创建maven依赖文件夹后,将附件解压至指定文件夹即可使用。 可解决Missing artifact com.alibaba:dubbo:jar:2.8.4 dubbo问题。

    Maven 依赖详细理解.pdf

    依赖范围(scope)是Maven依赖管理的一个重要概念。scope定义了依赖项的使用范围,主要有以下几个选项:compile、provided、runtime和test。compile表示依赖项在编译时需要,provided表示依赖项在编译和测试时需要,但...

    springboot 的maven依赖包1

    springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。

    elasticsearch 5.4.0 maven依赖jar包

    "elasticsearch 5.4.0 maven 依赖jar包" 指的是在 Maven 项目中使用 Elasticsearch 5.4.0 版本时,需要的全部依赖库文件。这些 jar 包包括 Elasticsearch 核心库、X-Pack 插件以及其他相关的第三方库,例如 Lucene、...

    jackson2.6.0 jar maven依赖.txt

    jackson2.6.0 jar maven依赖 jackson2.6.0 jar maven依赖jackson2.6.0 jar maven依赖jackson2.6.0 jar maven依赖jackson2.6.0 jar maven依赖

    Geoserver maven 依赖

    本篇将深入探讨"GeoServer Maven依赖"这一主题,以及如何在Java环境中使用Maven构建GeoServer相关的项目。 首先,Maven是Apache软件基金会的一个项目,它通过一个项目对象模型(Project Object Model,POM)来管理...

    jodconverter2.2.2.jar Maven依赖包

    标题“jodconverter2.2.2.jar Maven依赖包”涉及到的是一个Java开发中的关键组件,即JODConverter库的一个特定版本。JODConverter是一个开源的文档转换工具,它允许用户在Java应用程序中方便地将各种Office文档格式...

    SpringBootV2.2版本,Maven依赖包文件

    SpringBootV2.2版本,Maven依赖包文件,包括spring-boot-starter-web、mybatis-spring-boot-starter、spring-boot-starter-jdbc、mysql-connector-java、shiro-spring、mybatis-plus、mybatisplus-spring-boot-...

    maven依赖包2

    【标题】"maven依赖包2"涉及到的是Java开发中重要的构建工具——Maven的依赖管理部分。在Java世界里,Maven是一个广泛使用的项目管理和综合工具,它可以帮助开发者管理和构建Java项目,通过解决项目的依赖关系,使得...

    常用maven依赖

    将开发过程常用的maven依赖汇总下来了,不用每次都去maven仓库查询,可以节省很多时间

    SSM常用Maven依赖

    SSM基本的Maven依赖文件,测试可用

    activiti开发项目maven依赖POM文件

    基于ACTIVITI引擎进行开发,利用maven进行依赖管理,本文件列出来具体的依赖项

    dubbo项目maven依赖

    1. **依赖版本不匹配**:Dubbo项目依赖于许多其他库,如果本地Maven仓库中的依赖版本与项目中声明的不一致,可能导致编译失败。解决方法是更新Maven的settings.xml文件,或者在pom.xml中指定特定版本。 2. **网络...

    kettle7.2和8.2相关maven依赖包仓库

    kettle是国外开源的一款ETL集成工具,其最新版8.2版本改为了maven项目,由于其maven仓库下载实在太慢,这里提供了我费了一两天才下载好的依赖包,直接解压放在本地仓库即可。方便好使,好用的给个五星好评。

    基于Maven依赖的SSM AJAX增删改查demo

    基于Maven依赖的SSM项目 AJAX查询增删改查demo,前端Bootstrop 数据校验:jquery+JSR303后端校验,非常有利于框架初学者学习参考

Global site tag (gtag.js) - Google Analytics