简述
maven是啥我这里就不做介绍了,需要教程的可以私信我,文章主要介绍使用idea搭建maven工程
一。搭建maven服务端
通常网上说的搭建maven环境指的是搭建maven客户端,客户端默认从中央仓库( http://www.mvnrepository.com/ )下载jar包。
maven安装目录
|--bin Maven的可执行命令文件夹
|--boot Maven的引导程序(类加载器)
|--conf 配置文件夹
|--lib Maven的核心程序代码
Maven的仓库分类
- 本地仓库:本地缓存jar包的文件夹,通常我们会修改本地仓库地址
- 远程仓库:也叫私服。一些企业、组织、社区自己搭建的仓库服务
- 中央仓库:Maven官方团队提供的仓库,里边有最全的jar包
常用的项目构建命令:
- 清理:
mvn clean
,清理target目录 - 编译:
mvn compile
,编译主体程序代码,结果放在target目录里 - 测试:
mvn test
,运行单元测试代码。要求:单元测试类放在src\test\java
里,并且类名以Test
结尾 - 打包:
mvn package
,把主体程序代码打包。Java项目打包成jar包,web项目打包成war包 - 安装:
mvn install
,把程序包安装到本地仓库。
依赖范围:在打包时需要设定scope作用域
(一)windows安装
用于项目开发
1.下载maven安装包
http://maven.apache.org/download.cgi
2.压缩包解压
3.配置环境变量
- 增加
MAVEN_HOME=Maven的解压目录
- 修改Path中添加
%MAVEN_HOME%\bin
4.配置conf/setting.xml目录
指定jdk版本
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
改变仓库位置
默认在用户目录下,这样会占用C盘的空间: <localRepository>D:\server\maven</localRepository>
5.验证Maven配置
cmd命令:mvn -version
(二)linux安装
用于项目部署,当然你也可以选择不安装,在本地直接把依赖都打包到项目工程里面。
其他步骤均和windows一样,只有设置环境变量不一样
linux设置环境变量
设置环境变量 :
vim /etc/profile
在/etc/profile中添加以下几行
MAVEN_HOME=/usr/local/maven3
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
执行source /etc/profile使环境变量生效
source /etc/profile
最后运行mvn -v验证maven是否安装成功,如果安装成功会打印如下内容
mvn -v
(三)maven聚合工程的创建
搭建maven聚合工程,可以把子模块建在父工程里面,也可以创建一个空项目把父工程和子工程做成同级目录后在pom添加依赖,需要注意的是父工程是做版本控制的,同时父工程里面有的包子工程都会自动继承。比如mybatis的依赖只有dao层使用,就不要添加到父工程中。
构建普通maven聚合工程详细步骤参考:
创建spring boot的maven聚合工程
你可以先创建普通maven聚合工程之后添加spring boot的起步依赖,也可以使用idea的spring initalizr创建工程后再设定聚合工程的父子关系(演示)。
(1)创建空项目用来放置项目
(2)设置maven环境
(3)创建父工程模块
添加起步依赖:注意有版本区别,后面的步骤确定即可
(4)创建子工程
后面一直确定即可
(5)建立父子依赖
父模块pom
子模块pom
(6)其他步骤
删除无用的文件
web目录没有webapps目录(参考):
补充pom文件
比如你需要打包到私服就需要添加配置,内容参考文章后面的部分
(6)运行
这种方式创建的项目会自动创建程序入口,使用程序入口启动项目即可
idea项目打包
spring boot打包工具默认把运行文件打包到各模块的target目录下,生成的jar也在该目录下
直接丢上去运行可能会找不到类,这时我们可以充分的利用idea提供给我的打包设置。
war包
先设置编译输出实体,把编译后生成的文件按照web工程的方式设置,创建后默认的就可以
再设置输出war包实体
jar包
创建后再项目目录下会新增一个文件
结果验证
注意:这个操作一定要再添加依赖之后,如果新增依赖,需要重新设置实体。
这样打包所有的依赖都解压成class文件,如果你想打成jar的形式
你也可以把lib单独做一个文件夹打到一起(参考):
总之打包你想怎么打就怎么打,想把依赖放哪就放哪,不过单独依赖单独打包就注意项目启动要设置classpath加载路径,否则会出现找不到依赖包的错误。
(四)搭建maven私服
私服服务器即是公司内部的 maven 远程仓库, 每个员工的电脑上安装 maven 软件并且连接私服服务器,员工将自己开发的项目打成 jar 并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。私服还充当一个代理服务器,当私服上没有 jar 包会从互联网中央仓库自动下载 ,个人开发是否安装私服根据实际需求,可以将本地依赖包上传到maven本地或者直接按照普通工程方式导入项目,这样就不需要安装私服。
特点
1.便于公司内部jar包调用
2.提高jar包下载速度
安装步骤
参考链接:
1.下载私服nexus安装包
https://www.sonatype.com/download-oss-sonatype>
2.解压安装包
查看nexus的配置文件conf/nexus.properties
3.安装服务
使用管理员方式运行dos,切换到安装目录D:\server\nexus\nexus-3.20.1-01\bin,执行nexus.bat install
4.启动服务
或者使用nexus.bat start
启动成功
5.验证
管理界面http://localhost:8081/nexus
登入账号admin 新版本的密码不再是admin123
/sonatype/sonatype-work/nexus3/ 复制 admin.password 里 的密码登录即可,登录后,会提示要修改密码,修改密码后,会发现/nexus-data/admin.password 已经不在
6.卸载nexus
cmd进入nexus的bin目录,
停止服务
执行:nexus.bat stop
执行:nexus.bat uninstall
nexus仓库
1.仓库
仓库类型
hosted(宿主) :私服
maven-releases : 指公司内部已经发布正式版本的项目 (自己开发)
maven-snapshorts : 指公司内部项目还处于测试版本的项目 (自己开发)
maven-3rd party : 私服配置指向第三方仓库 (其它公司开发 )
proxy(代理) :私服
maven-central:代理仓库,代理中央仓库
自己新增阿里云的仓库,提高下载速度,阿里云的maven仓库url为http://maven.aliyun.com/nexus/content/groups/public
然后再public组里面讲这个aliyun-proxy
仓库加入,排在maven-central
之前即可。
group:仓库组
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml
中使用
Nexus的调度任务
默认安装好之后是没有索引和jar文件的,因为你要自己定义任务去执行。
Nexus提供了一系列可配置的调度任务来方便用户管理系统。用户可以设定这些任务运行的方式,例如每天、每周等。调度任务会在适当的时候在后台运行。
要建立一个调度任务,单击左边导航菜单中的Tasks,点击Create Task
,然后选择一个任务类型。
下几种常用类型的调度任务:
- Execute script:执行自定义脚本
- Purge开头:清理一些不使用的资源。
- Rebuild repository index:为仓库重新编纂索引,从远仓库下载最新的索引。
- Rebuild Maven repository metadata:基于仓库内容重新创建仓库元数据文件,同时重新创建每个文件的校验和md5与sha1。
- Remove snapshots from Maven repository:把快照删了,这个是在稳定版发布后清除
Nexus搜索页
这个不需要登录就可以访问,用来查询jar包。支持模糊查询
Blob Stores
文件存储的地方,创建一个目录的话,对应文件系统的一个目录,可供仓库上传文件使用,如图所示:
本地Maven使用私服
安装和配置好之后,在开发中如何使用呢。可在maven的默认配置settings.xml
中修改如下:
|
如果要发布自己的jar到私服,就需要修改工程的pom.xml
,添加如下内容,否则什么都不用做:
|
注意上面的repository的id值一定要跟settings.xml
文件中配置的server一致。
上传到Nexus上,使用 mvn deploy
即可,开发的时候请使用snapshot版本,也就是version的后缀必须是-SNAPSHOT
。
|
快照版成功效果
第三方Jar上传到Nexus
|
-DrepositoryId
的值即为在setttings.xml
里面配置的server id。
打包或发布的时候如果想跳过测试,加一个参数:
|