maven脑图
2021-04-14 07:43:00 5 举报
AI智能生成
maven的常用命令和知识
作者其他创作
大纲/内容
作用
项目构建
依赖管理
项目信息管理
功能
以来管理系统
多模块构建
一致的项目结构
一致的构建模型和插件机制
规约
java源码
/src/main/java/
java配置文件,资源文件
/src/main/resource
java测试代码,资源文件
/src/test/resource
文件编码过程中生成的.class文件/jar/war
/target
配置文件
pom.xml
常用命令
创建maven项目
mvn archetype:create
编译源代码
mvn compile
发布项目
mvn deploy
编译测试源代码
mvn test-compile
运行应用程序中的单元测试
mvn test
生成项目相关信息的网站
mvn site
清除项目目录中的生成结果
mvn clean
根据项目生成的jar/war
mvn package
在本地Repository中安装jar
mvn install
生成eclipse项目文件
mvn eclipse:exlipse
启动jetty服务
mvn jetty:run
启动tomcat服务
mvn tomcat:run
清除以前的包后重新打包,跳过测试类
mvn clean package -Dmaven.test.skip=true
清除 Project 中以前的编译的东西,重新再来
mvn eclipse:clean
开始编译 Maven 的 Project
mvn eclipse:eclipse
清除以前的包后重新打包
mvn clean package
优点
简化了项目以来管理
易于上手
便于与持续集成工具整合
便于项目升级
有助于多模块项目的开发
很多插件
坐标元素
groupId
定义当前 Maven 项目隶属的实际项目
artifactId
该元素定义当前实际项目中的一个 Maven 项目(模块)
version
该元素定义了使用构件的版本
packaging
定义 Maven 项目打包的方式,使用构件的什么包。
打包方式通常与所生成构件的文件扩展名对应。
打包方式通常与所生成构件的文件扩展名对应。
默认为 jar 包
classifier
该元素用来帮助定义构建输出的一些附件
版本规则
<主版本>.<次版本>.<增量版本>
主版本
一般来说代表了项目的重大的架构变更
次版本
一般代表了一些功能的增加或变化,但没有架构的变化
增量版本
一般是一些小的 bug fix ,不会有重大的功能变化
dependencie
属性
groupId
artifactId
version
scope
依赖项的适用范围
compile
默认值
适用于所有阶段(开发、测试、部署、运行),本 jar 会一直存在所有阶段
provided
只在开发、测试阶段使用,目的是不让 Servlet 容器和你本地仓库的 jar 包冲突
runtime
只在运行时使用,如 JDBC 驱动,适用运行和测试阶段
test
只在测试时使用,用于编译和运行测试代码,不会随项目发布
system
需要显式提供包含依赖的 jar 包,Maven 不会在 Repository 中查找它
import
用于一个 <dependencyManagement /> 对另一个 <dependencyManagement /> 的继承。非常重要
exclusions
排除项目中的依赖冲突时使用
dependencyManagement
统一了 Maven 中依赖的版本号,定义在 dependencie /> 中的依赖,
在不指定具体版本号时,就会沿着上层找到 <dependencyManagement /> 中的依赖,
并使用它的版本号
在不指定具体版本号时,就会沿着上层找到 <dependencyManagement /> 中的依赖,
并使用它的版本号
LASTEST
是指某个特定构件最新的发布版或者快照版(SNAPSHOT),最近被部署到某个特定仓库的构件
RELEASE
指仓库中最后的一个非快照版本
SNAPSHOT
快照版本
依赖原则
依赖路径最短优先原则
pom文件中申明顺序优先
覆写优先
如何解决jar冲突
mvn dependency:tree
查看依赖树
Maven Helper插件
通过Maven的依赖原则来调整坐标在pom文件的申明顺序是最好的办法
或者使用将冲突中不想要的jar引入的jar进行<exclusions>掉
生命周期
Clean生命周期
清理项目
pre-clean
执行清理前需要完成的工作
clean
清理上一次构建生成的文件
post-clean
执行清理后需要完成的工作
Default生命周期
构建项目
validate
验证工程是否正确,所有需要的资源是否可用
compile
编译项目的源代码
test
使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署
package
把已编译的代码打包成可发布的格式,比如 jar、war 等
integration-test
如有需要,将包处理和发布到一个能够进行集成测试的环境
verify
运行所有检查,验证包是否有效且达到质量标准
install
把包安装到maven本地仓库,可以被其他工程作为依赖来使用
deploy
在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享
Site生命周期
建立和发布项目站点
pre-site
生成项目站点之前需要完成的工作
site
生成项目站点文档
post-site
生成项目站点之后需要完成的工作
site-deploy
将项目站点发布到服务器
idea maven
clean
清理自动生成的文件,也就是 target 目录
validate
验证 Maven 描述文件是否有效
compile
编译 java 代码
test
运行测试代码
package
项目打成 jar、war 包等
verify
验证构件包是否有效
install
将构件包安装到本地仓库
deploy
将构件包部署到远程仓库
site
生成项目站点
插件
Build plugins
在构建时执行,并在 pom.xml 的 元素中配置
Reporting plugins
在网站生成过程中执行,并在 pom.xml 的元素中配置
常用插件
clean
构建之后清理目标文件。删除目标目录
compiler
编译 Java 源文件
surefile
运行 JUnit 单元测试。创建测试报告
jar
从当前工程中构建 JAR 文件
war
从当前工程中构建 WAR 文件
javadoc
为工程生成 Javadoc
antrun
从构建过程的任意一个阶段中运行一个 ant 任务的集合
Maven仓库
本地仓库
远程仓库
中央仓库
私服
架设在局域网内的仓库服务
特性
节省自己的外网带宽:减少重复请求造成的外网带宽消耗
加速 Maven 构件:如果项目配置了很多外部远程仓库的时候,构建速度就会大大降低
部署第三方构件:有些构件无法从外部仓库获得的时候,我们可以把这些构件部署到内部仓库(私服)中,供内部 Maven 项目使用
提高稳定性,增强控制:Internet 不稳定的时候,Maven 构建也会变的不稳定,一些私服软件还提供了其他的功能
降低中央仓库的负荷:Maven 中央仓库被请求的数量是巨大的,配置私服也可以大大降低中央仓库的压力
主流私服
Apache 的 Archiva
JFrog 的 Artifactory
【主流】Sonatype 的 Nexus
私服仓库类型
(宿主仓库)hosted repository
(代理仓库)proxy repository
(仓库组)group repository
其他公共库
仓库类型
SNAPSHOT 快照仓库
用于保存开发过程中的不稳定版本
RELEASE 发布仓库
用来保存稳定的发行版本
0 条评论
下一页