maven 之依赖管理
1. 基本配置:
<!-- dependencies 该标签下可以配置多个依赖 -->
<dependencies>
<!-- 配置一个依赖 通过gav来配置的-->
<dependency>
<!-- gav是必须配置的基本坐标 -->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- type用于指定依赖的类型 默认为jar -->
<type>jar</type>
<!-- classifier 该元素用来帮助定义构建输出的一些附属构件。比如javadoc和sources.jar
。 这是java文档和源代码。
<classifier></classifier>-->
<!-- scope只依赖的范围 -->
<scope>test</scope>
</dependency>
</dependencies>
1.依赖范围:
a)Compile 编译依赖范围。 如果没有指定,就会默认使用该依赖范围。 使用此依赖范围的Maven依赖, 对于编译,测试,运行都有效。
b)Test: 测试依赖范围。 只在测试的时候需要。比如junit
c)Provided: 已提供依赖范围。 使用此依赖范围的Maven依赖,对于编译和测试有效, 但在运行时无效。 典型的例子是servlet-API, 编译和测试项目的需要, 但在运行项目时, 由于容器已经提供, 就不需要Maven重复地引入一遍。
d)Runtime: 运行时依赖范围。 使用此依赖范围的Maven依赖,对于测试和运行有效, 但在编译代码时无效。 典型的例子是:jdbc驱动程序, 项目主代码的编译只需要jdk提供的jdbc接口,只有在执行测试或者运行项目的时候才需要实现上述接口的具体jdbc驱动。
e)System: 系统依赖范围。 一般不使用。
2.如何查找要依赖的坐标:
在网站上查询:http://mvnrepository.com/
也可以从私服的索引上查询
3.依赖的传递性
在maven中,依赖具有传递性。
项目A----->log4j
项目B------>项目A,那么项目B也就依赖了log4j
4.依赖的传递性可能造成冲突
项目A------>log4j1.2.9
项目B------->log4j1.2.12
项目B-------->项目A
解决方案:最短路径优先,项目B最终依赖的是log4j1.2.12
项目A------->log4j1.2.9
项目B------->log4j1.2.12
项目C-------->项目A
项目C--------->项目B
解决方案:谁先声明使用谁
5.依赖的排除
在jar冲突时,maven可以解决这个问题。但是有时想使用某一个jar,这个时候可以使用依赖排除的方式将不需要的jar包排除
<dependency>
<groupId>cn.sxt</groupId>
<artifactId>user-mapper</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 依赖的排除 -->
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
7.聚合
由于项目可能是由多个模块组成的,一个一个模块操作比较麻烦。所以可以统一的设置一个项目来管理。
<groupId>cn.sxt</groupId> <artifactId>user-aggregation</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>user-aggregation</name> <modules> <module>../user-vo</module> <module>../user-mapper</module> <module>../user-service</module> </modules>
8 . 继承
父类的项目为pom
<groupId>cn.sxt</groupId> <artifactId>user-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>user-parent</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <log4j.version>1.2.9</log4j.version> </properties> <dependencies> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> </dependencies>
子类的配置文件
<parent>
<groupId>cn.sxt</groupId>
<artifactId>user-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>cn.sxt</groupId>
<artifactId>user-vo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>user-vo</name>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
9. web项目开发啊
a)选择骨架时,选择webapp

依赖相关的jar包
<dependency>
<groupId>cn.sxt</groupId>
<artifactId>user-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
配置tomcat插件
<!-- 配置插件 -->
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<!-- 端口 -->
<port>8080</port>
<!-- 访问路径 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
通过命令:tomcat:tun运行
测试:http://localhost:8080/
posted on 2017-05-15 17:01 forever_2h 阅读(191) 评论(0) 收藏 举报
浙公网安备 33010602011771号