Maven-基础

  1. 云栖社区>
  2. 博客>
  3. 正文

Maven-基础

futaosmile 2017-09-11 17:53:00 浏览379
展开阅读全文

Maven-Apache
项目构建工具,用来管理项目依赖

Maven构建的项目非常小
jar包在仓库,而不在项目下面,Maven通过坐标去查找jar包(本地或中央仓库)。
坐标:struts2-core-2.3.24.jar
Apache(公司名称)+Struts2(项目名称)+2.3.24(版本信息)


Maven两大核心

  1. 依赖管理:对jar包管理
  2. 项目构建:项目在编码完成后,编译,打包,测试,部署--Maven通过命令来实现

Maven安装

Maven安装前提:Maven程序由java开发,依赖jdk
java环境变量配置
maven环境变量配置

MAVEN_HOME                             bin的上一级
PATH     ;%MAVEN_HOME%\bin;            bin目录


cmd->
java -version
mvn -v

Maven本地仓库配置

img_43a8e954f5d10afc23a3a4a7c0017c83.png
仓库类型

配置本地仓库:
\apache-maven-3.5.0\conf\settings.xml

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repositoryrepository
  <localRepository>/path/to/local/repo</localRepository>
  -->

标准目录结构

img_f6ab4a93ffa2ff51ac50a3c0c5842f84.png
标准目录结构

Maven常用命令

java -clean,删除之前编译好的.class文件,重新编译一次
mvn clean: 工作插件(可以在本地maven仓库找到对应的jar包):maven-clean-plugin-清理项目下的target目录
mvn compile: 工作插件:maven-compiler-plugin-编译,将项目中的.java文件编译成.class文件
mvn test:单元测试,将项目根目录下面src/test/java目录下的单元测试类中的方法都会执行,类名要求:XxxxTest.java
mvn package:将项目打包到target目录下
web Project ----war包
java Project ---java包
mvn install :安装(打包):将项目打包的文件放到本地仓库。解决本地多个项目共用一个jar包,该jar包发生更改后其他项目不需要改动,因为使用的是该jar包在maven本地仓库的坐标
后面的动作会包含前面的动作


Maven项目的生命周期

在Maven中存在“三套”生命周期,每一套生命周期互相独立,互不影响。但是在同一套生命周期内,执行后面的命令,前面的命令会自动执行。
CleanLifeCycle:清理生命周期
clean
defaultLifeCycle:默认生命周期
compile,test,package,install,deploy
siteLiftCycle:站点生命周期
site


坐标信息

GroupId:公司域名倒序
ArtifactId:项目名称
Version:版本,SNAPSHOP:测试版本,RELEASES:发布版本
Packaging:打包方式,jar:JAVA工程,war:web工程,pom:父工程


Maven依赖范围

  1. compile:编译依赖范围(默认),对其三种都有效
  2. test:测试依赖范围,只对测试classpath有效
  3. runtime:运行依赖范围,只对测试和运行有效,编译主代码无效,例如JDBC
  4. provided:已提供依赖范围,只对编译和测试有效,运行时无效,例如selvet-api
  5. system:系统依赖范围.谨慎使用.例如本地的,maven仓库之外的类库文件
  6. import(maven2.0.9以上):导入依赖范围,不会对其他三种有影响

pom.xml

  1. 本项目的坐标信息
  2. 本项目jdk编译版本信息
  3. 本项目需要的插件/依赖信息

tips

子pom项目继承父pom项目,父项目必须在<dependencies> </dependencies>外层再包裹一层<dependencyManagement> </dependencyManagement>',子项目才能继承到父项目的依赖的版本号,子项目才可以免写<version></version>`

网友评论

登录后评论
0/500
评论
futaosmile
+ 关注