1.Maven项目管理工具
Maven 是一个项目管理工具,用来管理项目的生命周期,如项目中各个项目之间的依赖管理,还有许多项目构建的插件等。
使用 Maven 的最大好处就是不在需要我们手动维护项目中使用到的 jar 包依赖管理,还有许多项目构建的插件等。
2.Maven依赖管理两种方式
- dependencies
子项目默认继承父项目的所有 dependencies 依赖。 - dependencyManagement
子项目默认不继承父项目的 dependencyManagement 任何依赖,需要主动继承。
3.Maven定义依赖的参数
- groupld:项目组织名, 必选, cnjavastack
- artifact Id:项目唯一名称/必选
- version:版本号,必选,继承时可以不用
- type:项目类型,默认不填为:jar
- classifier:用于扩展不同的版本,如一个包可能适配多个不同的JDK版本
- scope:依赖范围
1.compile-编译依赖范围。默认的范围,可以 不填,表示在所有过程中都有效,如编译期、 测试过程中、运行期间等。
2.provided -已提供依赖范围。这个范围表示只 提供编译和测试阶段有效,运行期间不需要, 像Tomcat等容器本身已经提供的servlet-api 等。
3.runtime-运行时依赖范围。这个范围表示只 有 在 运 行 和 测 试 期 间 才 有 效 , 编译期间不需要,像连接数据库的jdbc驱动程序等。
4.test -测试依赖范围。这个范围只有测试阶段 有效,编译和运行不需要,像单元测试提供的 junit 包。
5.system -系统依赖范围。这个范围表示不依赖 本 地 仓 库 , j a r 在 其 他 的 目 录 , 需 要 通 过 systemPath指定路径,这个不建议使用。
6.import - 引 用 依 赖 范 围 。 只 能 用 在 中,并且导入的 type为pom类型的父工程配置,一般用来解 决多继承问题。 - systemPath:系统本地路径
- exclusions:需要排除的依赖
- optional:是否可选依赖
optional 和 exclusions 都是用来排除 jar 包依赖使用的,两者在使用上却是相反。
optional 定义后,该依赖只能在本项目中传递,不会传递到引用项目的父项目中,父项目需要主动引用该依赖才行。如项目A引用了项目B,项目B引用了项目C并且定义了 true,这时候项目C只能被项目B引用,而项目C不能在项目A中使用,如若使用得单独引入。
exclutions 是主动排除子项目传递过来的依赖。
4.Maven打包时跳过单元测试
- 不执行测试用例,也不编译测试用例
mvn package -Dmaven.test.skip=true - 不执行测试用例,但是编译测试用例
mvn package -Dskip Tests
步骤:
5.Maven中的profile的作用
Maven 中的 profile 用于指定多套环境配置。
如项目有开发、测试、生产至少有三个环境,所需要的配置信息肯定不一样,所以打包的时候可以指定使用 profile 对应的配置文件进行打包。
如指定用测试的配资打包:
mvn package -P test