maven
maven的简介
- maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理
主要体现在项目和管理
瀑布式开发:在做项目的时候要求有明确的需求,必须按照需求一步一步去做好规划,在项目的运行过程中严格的产出一些文档
敏捷开发:首先将用户最关注的软件模型做出来(上线),再根据实际需要修改项目中的不足,然后再发布
maven四大特性:
- 依赖管理系统:
可以用groupid,artifactid,version组成的Coordination(坐标),唯一标识一个依赖,比如:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
任何基于maven构建的项目自身必须定义这三个属性,生成的 包可以是jar包,也可以是war包或者jar包
groupid:定义maven项目隶属的实际项目-公司名称
artifactid:该元素定义实际项目中的一个maven模块-项目名
version:该元素定义maven项目当前所处的版本
坐标属性的理解: maven坐标为各种组件引入了秩序,任何一个组件都必须明确的定义自己坐标。
-
多模块构建
将一个大的项目分成多个小的模块,使用标签来定义一组子模块。 -
一致的项目结构
maven统一了项目的目录结构,不管在eclipse还是在idea中 maven项目的目录结构是一样的 -
一致的构建模型和插件机制
-
cmd下编译项目并运行
在需要运行的项目根目录下打开cmd
mvn compile(编译)
显示build success 表示项目已经编译好了
mvn exec:java -Dexec.mainClass=“xxx.Xxx”
(这里mainClass需要写到包含main函数的类。例子当中,xxx是类的包名,Xxx类是main函数所在的类。)
如果maven项目是第一次运行 可能运行时间比较慢
如果编译失败 可能出现的问题:
- 不是使用管理员权限的dos命令
- jdk环境配置问题,重装jdk
- 代码编写时,类里面没有设置包名(如果编译时类里面没加包名,执行时也不需要加包名)
maven命令
maven的命令格式如下:
mvn [plugin-name]:[goal-name]
mvn 表示maven命令,后面表示插件的名字:后面跟命令的名字
mvn clean package -Dmaven.test.skip=true 跳过单测打包
mvn clean install -Dmaven.test.skip=true 跳过单测打包,并把打好的包上传到本地仓库
mvn clean deploy -Dmaven.test.skip=true 跳过单测打包,并把打好的包上传到远程仓库
mvn -v 或者mvn -version //查看版本信息
mvn compile //编译源码
mvn clean //清除项目临时产生的文件
mvn package //项目打包工具
mvn deploy //将打包的文件发布到远程参考,供其他人员下载。
mvn test-compile //编译测试代码
mvn test //测试命令
mvn site //生成项目相关的网站
mvn archetype:create //创建 Maven 项目
mvn install //在本地 Repository 中安装 jar (将打包的jar包文件复制到你的本地库中,供其他模块使用)
mvn -Dmaven.test.skip=true //忽略测试文档编译
mvn clean compile //将.java类编译为.class文件
mvn clean package //进行打包
mvn clean test //执行单元测试
mvn clean install //使其他项目使用这个jar,会安装到maven本地仓库中
mvn archetype:generate //创建项目架构
mvn eclipse:eclipse//将项目转化成eclipse项目
mvn dependency:tree //打印出整个项目的依赖树
mvn dependency:list //查看已解析依赖
mvn dependency:analyze //查看依赖的工具
mvn help:system //从中央仓库下载文件至本地仓库
mvn tomcat7:run//在tomcat容器中运行java项目
mvn jetty:run//调用jetty插件的run目标在jetty Select容器中启动web应用
mvn help:active-profiles //查看当前激活的profiles
mvn help:all-profiles //查看所有profiles
mvn help:effective -pom //查看完整的pom信息
在需要运行的项目根目录下打开cmd运行mvn命令
-D传入属性参数
例如:mvn clean package -Dmaven.test.skip=true,
以-D开头,将maven.test.skip的值设置为true,就是告诉maven打包的时候,跳过单元测试,同理,mvn clean deploy -Dmaven.test.skip=true表示部署项目的时候跳过单元测试
-P:
使用指定的Profile配置
maven仓库:
对于maven来说:maven分为本地仓库和远程仓库。
首先会查看本地仓库,如果本地仓库没有,则会去远程仓库查找。
远程仓库分为三种:中央仓库,私服,其他公共库
中央仓库是默认配置下,maven下载jar包的地方(下载比较慢)
私服:局域网内假设一个私有的仓库服务器,用其代理所有所有外部的远程仓库,内部的项目还能部署到私服上,供其他项目使用。公司内部应该使用私服,优点:
- 节省自己的外网宽带
- 加速maven构建
- 部署第三方控件
- 提高稳定性
- 降低中央仓库的负荷
其他公共库:
常用阿里云仓库
maven的打包操作:
java项目产生jar包,web项目产生war包,
对于每个环境下的项目打包,对应的项目所需要的配置资源都会有所区别,可以通过ant 或者idea自带的打包功能实现打包,但是当项目很大,并且需要的外界配置很多的时候,此时的打包服务就会很复杂,对于maven项目而言,可以通过pom.xml配置的方式,来实现打包的环境选择,相比较其他形式的打包工具,通过maven只需要通过简单的配置,就可以轻松完成不同环境下项目的整体打包。
- 第一步:建立相对应的目录结构
- 第二步
配置好properties 文件,,,打开打开控制台 :
- 第三步 输入mvn命令
clean 清除 compile编译,package 打包 -p去找profile里的id