maven-learning03
2015-10-25 12:21
295 查看
学习目标:
使用STS创建Maven项目
maven的依赖管理
maven的聚合
maven的继承
修改字体大小window–>perferences–>General–>Colors and Fonts–>Basic–>Text Font
修改Maven
Window->preference->Maven->Installations修改,点击Add,选择本机上的maven版本
新建Maven Project
next->选择archetype->[maven-archetype-quickstart,maven-archetype-webapp(站点)]
GroupId -> 部门网址倒写+项目
ArtifactId -> 项目模块
Version -> 0.0.1-SNAPSHOT
next之后所有的文件夹就会被建好
资源文件,源文件的资源放在src/main/resources;测试文件的资源文件放在src/test/resources
test:在测试范围有效,在编译和打包时都不会使用这个依赖
provided:在编译和测试的过程都有效,最后生成war包时不会加入,诸如service-api,因为service-api,tomcat等服务器已经存在了,如果再打包会冲突
runtime:在运行时依赖,在编译的时候不会依赖
system
默认的依赖范围是compile
A依赖log4j-1.2.17(直接依赖)
B依赖log4j-1.2.9(直接依赖)
C依赖B,A,且C显示依赖log4j-1.2.9(间接依赖)
级别相同,先声明的先依赖
A->dbunit-2.2->commons-logging-1.0.4
B->commons-logging-1.1.1
C 依赖A,B
依赖级别不相同,则依赖层数最小的,此例中C依赖commons-logging-1.1.1
依赖的传递,主要针对compile作用域传递,test范围不会被传递
可以使用
所谓的聚合就是在多个模块的根目录中创建一个pom.xml文件集中编译项目模块(将多个pom.xml文件聚合到一起)。
在eclipse中可以创建一个简单项目(跳过archetype创建),并且在package中选择pom(管理类型),这个简单项目中只需要编写pom.xml
在这个聚合pom.xml中添加
这个并不会改变目录结构,依然跟依次maven其他项目的结果一样。这样的好处就是可以一次性的操作多个模块
所以就有了继承,所谓的继承就是将多个pom.xml文件中的相同信息聚合到一个文件(跟聚合类似了)
创建的过程与聚合类似,创建一个简单的项目(package 为 pom),只包含一个pom.xml文件
将多个项目中pom.xml一样的都拷贝到在本pom.xml文件
对于依赖的继承,需要使用
不仅减少了代码的编写,而且也避免了依赖包版本冲突问题
通过上述的藐视,可以发现继承和聚合很类似,所以可以将
如:
其他项目继承这个pom.xml文件时使用:
使用STS创建Maven项目
maven的依赖管理
maven的聚合
maven的继承
使用STS创建一个Maven项目
使用STS(Spring Tool Suite)进行Maven项目的开发修改字体大小window–>perferences–>General–>Colors and Fonts–>Basic–>Text Font
修改Maven
Window->preference->Maven->Installations修改,点击Add,选择本机上的maven版本
新建Maven Project
next->选择archetype->[maven-archetype-quickstart,maven-archetype-webapp(站点)]
GroupId -> 部门网址倒写+项目
ArtifactId -> 项目模块
Version -> 0.0.1-SNAPSHOT
next之后所有的文件夹就会被建好
资源文件,源文件的资源放在src/main/resources;测试文件的资源文件放在src/test/resources
依赖
<dependency> <!--设置依赖范围--> <scope>xxx<scope> </dependency>
依赖类型
compile:编译范围有效,在编译和打包时都会讲依赖存储进去test:在测试范围有效,在编译和打包时都不会使用这个依赖
provided:在编译和测试的过程都有效,最后生成war包时不会加入,诸如service-api,因为service-api,tomcat等服务器已经存在了,如果再打包会冲突
runtime:在运行时依赖,在编译的时候不会依赖
system
默认的依赖范围是compile
依赖继承
假设两个项目A,BA依赖log4j-1.2.17(直接依赖)
B依赖log4j-1.2.9(直接依赖)
C依赖B,A,且C显示依赖log4j-1.2.9(间接依赖)
级别相同,先声明的先依赖
A->dbunit-2.2->commons-logging-1.0.4
B->commons-logging-1.1.1
C 依赖A,B
依赖级别不相同,则依赖层数最小的,此例中C依赖commons-logging-1.1.1
依赖的传递,主要针对compile作用域传递,test范围不会被传递
依赖冲突
如果不想使用某个版本的依赖可以使用
<!-- maven-ch04依赖MySQL 5.1.37 maven-ch05依赖MySQL 5.1.35 --> <dependencies> <dependency> <groupId>org.learning.maven</groupId> <artifactId>maven-ch04</artifactId> <version>0.0.1-SNAPSHOT</version> <!--如果没有下述代码,则maven-ch06将依赖MySQL 5.1.37--> <exclusions> <exclusion> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </exclusion> </exclusions> </dependency> <!--maven-ch06将依赖MySQL 5.1.35--> <dependency> <groupId>org.learning.maven</groupId> <artifactId>maven-ch05</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies>
聚合
分模块管理项目,带来的最大问题就是需要将模块一个个依次编译,所以引入了聚合概念。所谓的聚合就是在多个模块的根目录中创建一个pom.xml文件集中编译项目模块(将多个pom.xml文件聚合到一起)。
在eclipse中可以创建一个简单项目(跳过archetype创建),并且在package中选择pom(管理类型),这个简单项目中只需要编写pom.xml
在这个聚合pom.xml中添加
<modules> <module>文件所在位置(可以使用“..”这样的相对路径)</module> ... </modules>
这个并不会改变目录结构,依然跟依次maven其他项目的结果一样。这样的好处就是可以一次性的操作多个模块
继承
每个项目都有一个pom.xml文件,而这些文件可能存在一些冗余信息,即这些文件存在一些共同的信息,如常量,常用的依赖包所以就有了继承,所谓的继承就是将多个pom.xml文件中的相同信息聚合到一个文件(跟聚合类似了)
创建的过程与聚合类似,创建一个简单的项目(package 为 pom),只包含一个pom.xml文件
将多个项目中pom.xml一样的都拷贝到在本pom.xml文件
对于依赖的继承,需要使用
<dependencyManager></dependencyManager>
<dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> </dependencies> </dependencyManagement>
不仅减少了代码的编写,而且也避免了依赖包版本冲突问题
通过上述的藐视,可以发现继承和聚合很类似,所以可以将
<modules></modules>添加到继承的pom.xml文件中
如:
<modules> <!--模块的位置--> <module>../maven-ch04</module> <module>../maven-ch05</module> <module>../maven-ch06</module> </modules>
其他项目继承这个pom.xml文件时使用:
<parent> <groupId>org.learning.maven</groupId> <artifactId>maven-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- 继承的pom.xml文件的相对路径 --> <relativePath>../maven-parent/pom.xml</relativePath> </parent>
相关文章推荐
- MyBatis之旅-配置MyBatis的环境
- 如何一步步从数据产品菜鸟走到骨干数据产品
- 线索二叉树和中序非递归遍历线索化后的二叉树
- Servlet(五岁以下儿童)web.xml一些常用的配置
- 设计之惑
- Android第三方注解框架Annotations和butterknife
- Android Code Style Guidelines for Contributors
- 作業系統之前的程式 for stm32f4discovery (3) - usart
- 简单工厂的来世今生
- xml 将xml文档以表格的形式输出
- Struts2通过json前后自动给后台自定义对象赋值
- 2011 Asia Dalian Regional Contest
- Oracle数据库基础(五)--索引,触发器
- vi编辑器
- (二期)IOS调试技巧
- jquery滚动加载
- Zoj 3545 Rescue the Rabbit(ac自己主动机+dp)
- 信息安全系统设计基础第七周学习总结
- CSRF验证失败. 相应中断
- C语言,回溯法0-1背包问题