Maven学习笔记(二)
来源:互联网 发布:人工智能 书籍 编辑:程序博客网 时间:2024/06/05 11:01
Maven学习笔记(二)
- Maven学习笔记二
- Maven的生命周期和插件
- clean 清理项目
- default 构建项目最核心
- site 生成项目站点
- pomxml的结构
- 依赖的范围
- 依赖冲突
- 聚合与继承
- Maven的生命周期和插件
1.Maven的生命周期和插件
clean\compile\test \package\install
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
Maven包含三套独立生命周期,执行某个命令,会依次顺序执行前面的命令,但不会处罚另外两套命令。
1.clean 清理项目
pre-clean 执行清理前的文件啊clean清理上一次构建生成的所有文件post-clean 执行清理后的文件。
2.default 构建项目(最核心)
compile test package install
3.site 生成项目站点
pre-site 在生成项目站点前要完成的工作site 生成项目的站点文档。post-site 在生成项目站点后要完成的工作。site-deploy 发布生成的站点到服务器上。
maven中的许多功能均是调用插件实现的。
例如:source插件可以将项目源码进行打包
步骤如下:
- 1.打开pom.xml,向其中加入如下代码
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <!--绑定source到package阶段--> <executions> <execution> <!--指定运行阶段--> <phase>package</phase> <!--指定运行目标--> <goal>jar-no-fork</goal> </execution> </executions> </plugin> </plugins></build>
之后,进行maven操作时,需要:选中项目右键-》run as -》 maven build…
在goals中填写需要的maven操作。之后,直接敲击shift+alt+x+m即可直接运行maven命令。
2.pom.xml的结构
<project xmlns="..."> <!--指定当前pom的版本--> <modelVersion>4.0.0</modelVersion> <groupId>反写的公司网址+项目名</groupId> <artifactId>项目名+模块名</artifactId> <!--第一个0表示大版本号 第二个0表示分支版本号 第三个0表示小版本号 0.0.1 snapshot快照 alpha 内部测试 beta公测 Release 稳定 GA 正式发布 --> <version></version> <!-- 默认是jar war zip pom --> <package></package> <!--项目描述名--> <name></name> <!--项目地址--> <url></url> <!--开发人员--> <developers></developers> <!--证书--> <licenses></licenses> <!--组织名--> <organization></organization> <!--依赖列表重中之重--> <dependencies> <dependency> <groupId></groupId> <artifactId></artifactId> <version></version> <type></type> <!--依赖范围--> <scope>test</scope> <!--设置依赖是否可选,有两个值,true、false。默认是false,子项目是继承的。为true,子项目必须选择改该依赖--> <optional></optional> <!--排除依赖列表--> <exclusions> <exclusion> </exclusion> </exclusions> </dependency> </dependencies> <!--依赖管理模块,定义在父类模块,供子模块继承使用,定义的依赖并不会在该模块中使用--> <dependencyManagement> <dependency> </dependency> </dependencyManagement> <!--为构建行为提供相应的支持--> <build> <plugins> <groupId></groupId> <artifactId></artifactId> <version></version> </plugins> </build> <!--子模块对父模块pom的继承--> <parent></parent> <!--聚合运行多个的maven项目,使用此标签方便整体的打包--> <modules></modules></project>
3.依赖的范围
编写项目,应用某一jar包,须将jar包引用到项目的classpath中。
maven中为我们提供了三种classpath:编译、测试、运行
就是来控制依赖与三中的classpath的关系。
dependency Scope共有6种值可供选择
compile、 默认的范围,比那一测试运行都有效
provided、 在编译测试和测试有效,例如:jdbc
runtime、 测试运行有效
test、 在测试有效
system、 编译测试有效,与本机系统相关联,可以执行差
import、 导入的范围,只是用子啊dependencyManagement中,表示从其它的pom中导入dependecy的配置。
例如:
<project> <modelVersion>4.0.0<modelVersion> <groupId>maven</groupId> <artifactId>B</artifactId> <package>pom</package> <name>B</name> <version>1.0</version> <dependencyManagement> <dependencies> <dependency> <!--将A中依赖导入到B中--> <groupId>maven</groupId> <artifactId>A</artifactId> <package>pom</package> <version>1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <dependencies> <dependency> <groupId>test</groupId> <artifactId>d</artifactId> <package>pom</package> <version>1.0</version> </dependency> </dependencies> </dependencyManagement></project>
通过exclusions可以取消传递依赖。
4.依赖冲突
假设:A->B->C
B依赖common-2.0
C依赖common-2.4
则如果,A的pom中只写了依赖B,那么,A依赖的common是2.0版本(就近原则依赖)
如果,A的pom写了以来B,同时有写了以来C,且先声明的对C的依赖。则A依赖的common是2.4版本的(先声明,先依赖)
5.聚合与继承
聚合,既同时打包整个项目的多个模块,
../A
../B
继承,在开发多个模块时,可能有些模块共用了同一个依赖,则只需顶一个被继承者,使其他模块进行继承即可。
继承者pom.xml
<project> <modelVersion>4.0.0<modelVersion> <groupId>maven</groupId> <artifactId>B</artifactId> <package>pom</package> <name>B</name> <version>1.0</version><!--参数可以写入配置标签中--> <properties> <d.version>1.0</d.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>test</groupId> <artifactId>d</artifactId> <package>pom</package> <version>${d.version}</version> </dependency> </dependencies> </dependencyManagement></project>
继承者的pom.xml添加:
<parent> <groupId>maven</groupId> <artifactId>B</artifactId> <version>1.0</version></parent>
此处贴出博主编写的maven练习源码供大家参考学习,如有问题,欢迎大家共同讨论。
- maven学习笔记二
- maven学习笔记二
- (二)Maven学习笔记
- maven学习笔记二
- Maven学习笔记二
- Maven学习笔记(二)
- Maven学习笔记二
- Maven学习笔记 --- Maven入门笔记二
- maven(二):学习笔记
- maven学习笔记(二)
- Maven学习笔记(二)
- Maven学习笔记(二)-仓库
- Maven学习笔记(二)
- Maven学习笔记(二)
- 《Maven权威指南》学习笔记(二)
- Maven权威指南》学习笔记(二)
- maven学习笔记(二) 依赖
- Maven学习笔记二:设置HTTP代理
- 我的编号
- centos7 install caffe
- 机器学习笔记(十)EM算法及实践(以混合高斯模型(GMM)为例来次完整的EM)
- Still unable to dial persistent://blog.csdn.net:80 after 3 attempts
- linux执行sh脚本报错的解决办法
- Maven学习笔记(二)
- 100亿数据平滑数据迁移,不影响服务
- Codeforces #406 (Div. 2) B. Bear and Friendship Condition(并查集
- push、pop及函数调用约定
- 编程之美 给定一个整数N,那么N的阶乘N!末尾有多少个0?
- eclipse + pydev 导入的工程 代码不能追踪的问题
- C#读取MDB数据
- IEnumerable与IEnumerator在C#中的使用
- java中怎么快速找到接口或者父类的实现和子类