maven降世--maven入门

maven学习(很不错呦)

https://www.imooc.com/learn/443

maven定义

maven是基于pom的项目管理和构建工具。
重点: pom文件中的标签 以及maven常用构建命令

maven环境搭建

1. 基于jdk

2. 去官网下载

  1. 去https://maven.apache.org/download.cgi 下载压缩包 解压
  2. 在conf/settings中配置阿里云镜像 并配置本地仓库
  <mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  </mirror>

3. 仓库

用于存储jar包

  1. 本地仓库
  2. 远程仓库

4. 镜像

远程仓库的副本 安装在了国内,更加稳定,下载迅速
如阿里云镜像

maven的固定目录结构

项目--
	|
	|
	|--	src
	|	|
	|	|-----main  
	|	|         |
	|	|         |----java    放一些java代码
	|	|         |	
	|	|         |----resources  放一些资源文件
	|	|
	|	|-----test
	|	          |
	|	          |----java
	|	          |	
	|	          |----resources	
	|
	|--pom.xml	

maven生命周期

  1. clean 清理项目 pre-clean clean post-clean
  2. default 构建项目 compile test package install deploy
  3. site 生成项目站点 pre-site site post-site site-deploy

三个生命周期相互独立,每个生命周期又包含一些阶段,各个阶段是有顺序的,后面的阶段依赖前面的阶段,执行后面的阶段,前面的阶段按顺序执行

项目完整的构建过程: 清理 编译 测试 打包 集成测试 验证 部署

生命周期是抽象概念,具体maven如何编译,测试,打包是通过maven插件来完成的 如: maven-compile-plugin maven-test-plugin等

通过pom对项目进行管理

  1. pom 中配置本项目的 groupId artifactId version 这是这个项目的唯一标识,叫为坐标

  2. pom中的标签:

     modelVersion: pom的版本
    
     groupId: 反写的公司网址+项目名
    
     artifactId:项目名+模块名  
    
     version: 主版本+分支版本+小版本+ (snapshot 快照 release稳定 GA正式发布  beta公测  alpha内部测试)
    
     packaging:  jar|war|zip|pom  默认jar
    
     dependencies  dependency   引入的依赖(jar)
    
     dependenciesManagement   依赖管理()
    
     build   plugins   plugin
    
     parent  子模块继承父模块    maven单继承, 多继承用dependenciesManagement  的scope为import
    
     modules  module   为了对模块进行统一的编译 打包 install
    

    依赖范围 scope

    依赖传递 默认依赖是具有传递性的 如果想排除传递性

<dependency>
	<exclusions>  
	   <exclusion>  
	         <groupId>...</groupId>  
	      	 <artifactId>...</artifactId>  
	    </exclusion>
	    ...
	</exclusions> 
</dependency> 

依赖聚合: 一次性将多个项目打包安装到本地仓库 modules的方式

依赖继承: 多个项目的依赖提取公共项放到父项目中 父:dependenciesManagement 子: parent dependencies dependency

依赖冲突: A --> B --> C BC都有同样的jar包,A会先用B的 如果A到B和到C的距离一样,谁在前面先用谁 1. 短路优先 2.位置优先

常用命令:

清理项目

mvn clean

构建项目

mvn compile
mvn test
mvn package
mvn install
构建骨架: mvn archetype:generate

吊命令

mvn -Dmaven.test.skip=true -U clean install   

疑问:

1. 为什么maven要基于jdk?

2. 如果没有编辑器,我该如何考虑java项目?   

3. mvn install的时候本地仓库文件不更新?    更新 

4. mvn install 打成的jar包里面会包含项目使用的那些jar包?   会包含
发布了31 篇原创文章 · 获赞 32 · 访问量 8106

猜你喜欢

转载自blog.csdn.net/qq_40905403/article/details/100103653