文章目录
常用命令
在项目根目录中使用maven命令
mvn clean: 清理 target目录. 项目编译之后的输出目录
mvn compile: 将main目录下代码编译,放置到 target目录下
mvn test: 将 src/test 下的代码. mvn test 也会将 main 下的目录编译一遍.
mvn package: 将 main/java 和 main/test 下的代码编译
并将他们打成war包
mvn install: 将打的包安装到本地仓库.
生命周期
clean ,compile,test,package,install.deploy 这几个步骤就是maven的生命周期
clean : 清理生命周期
compile - delpoy: 默认生命周期
站点生命周期 :
一键构建: 使用maven自身集成的tomcat插件对项目进行构建.
步骤:
编译compile,测试test,打包package,安装install,发布deploy
在最后发布的时候,需要对项目进行配置:
如果在别的环境deploy,在其他环境需要mvn clean才可以
概念模型图
POM
就是 POM.xml 文件
- 依赖
- 插件
- 以及描述了项目的相关信息
3.1 项目自身信息,项目所依赖JAR信息,项目运行环境信息 - 仓库
4.1 本地仓库下载,b2b:私服下载jar,以及最后到 central下载jar
构建生命周期
idea集成maven插件
- 本地安装maven
mvn -v - idea配置maven安装目录以及仓库文件配置
- Runner
我们只要是以maven为骨架创建的项目,只要已下载过的插件就可以不用去联网下载.使用本地的即可
-DarchetypeCatalog=internal
Web项目
使用Maven配置Web项目
指定可以创建JSP的目录–资源包
在Moudle 中指定 资源目录即可
demo
创建一个跳转到首页的JSP
- 创建Servlet
- 在 web.xml 配置 servler 和 servlet-mapping
- 在 pom.xml 导入依赖
- 直接输入命令
可以直接输入命令,例如: tomcat:run,来运行项目
解决冲突
tomcat:run之后,项目访问报错
这里是因为 maven 自身继承了 tomcat插件,tomcat中含有 jsp-api和servlet-api俩个jar
而我们也引入了这俩个jar
我们引入的
tomcat 中存在的
所以有了冲突: jar冲突.
我们编写的时候需要这俩个jar. 但是在运行的时候tomcat中已经有了,不再需要了.
作用域
用于排除jar冲突. 例如: 上面的那种情况
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
<scope>tets/compile/provided</scope>
</dependency>
修改运行环境
maven自身tomcat是tomcat6
我们想要使用tomcat7怎么办.
可以使用 plugin解决
添加一个tomcat插件即可
运行命令:
tomcat7:run
动态模板
Live Template:
为自定义模板创建组:TemplateGroup
为这个组创建模板内容以及在什么文件中使用
jdk插件
maven的jdk插件就是maven的compile插件.
编译环境的插件.
指定jdk版本:
target: Java文件使用什么版本编译
source: 编译之后的class文件使用什么运行
mysql
maven 从 mysql 中取出数据
整合SSM
maven和SSM一起使用
配置 web.xml 和 spring.xml
spring.xml 配置 扫描组件,扫描包,开启事物,开启注解支持,连接池,数据源,
web.xml 配置 中文乱码filter,filter-initParam
解决冲突和依赖传递
直接依赖 和 传递依赖
一共有三种方式解决
第一声明优先
路径近者优先
直接排除法
我们经常使用的就是 排除法
使用exclusions标签进行排除
将这个排除
父子项目
作用域
结论:
如果传递依赖到某个子模块的包不能用.表现为无法导入jar
我们只需要在子模块中再次导入jar即可
启动项目
- 使用本地安装 tomcat
配置 Tomcat Server,使用war启动 - 使用tomcat插件,启动父项目
使用 mvn 命令框,输入: tomcat7:run 即可 - 启动 web项目
在启动时,maven地址使用的是jar方式.
web会找到对应的 service,但是找的是jar.所以需要对service以及service依赖的dao进行打包
所以 - 选中父工程以及dao,service,web三个项目进行打包
私服
搭建maven私服,本地仓库
nexus. 有Linux 和 Window版本
以window版本演示
演示过程
略 … …
上传文件
上传jar到私服
- 访问界面
localhost:8081/nexus - type
类型为 hosted的都是本地上传的路径
可以通过这些路径上传jar到私服
类型为 proxy 都是中央仓库
也可以通过网络将中央仓库jar下载到本地,私服 - group
本地想要下载jar配置的路径.
上传项目
将项目上传到
这三者其中一个.
具体上传到哪一个. 可以看 项目 version的后缀
后缀是啥就上传到哪里.
maven配置
- 配置server
server 指定了username 和 pass - 配置pom.xml
pom.xml 这里的配置和 setting.xml 配置相同
在 pom.xml 中指定上传的路径
下载私服的jar
我们将dao上传到 私服. 在下载到的jar到 本地. 在项目中使用
- 在setting.xml 中配置从私服中下载jar的配置
激活
我们在setting.xml中配置了 私服,在 配置 activeProfile 中激活
安装第三方JAR到本地仓库
我们使用命令进行安装
安装jar到本地仓库
mvn install:install-file -DgroupId=path -DartifactId=xxx -Dversion=0.0.1 -Dfile=path -Dpackageing=jar
安装jar到私服
- 在settings.xml中配置,第三方私服的登录信息
- 执行命令
- mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackageing=jar -Dfile=path -Durl=要上传的私服地址 -DrepositoryId=thirdparty
总结
maven进阶大部分都讲解完毕了. 当然真正精通还有不少没讲.
但是这些知识可以看到,在公司中你去做一些发布jar到maven的动作是可以做到的.
算得上是初中级的知识了吧