1.maven是什么? 2.maven解决了问题?有什么好处?有什么作用?
传统项目:
1.项目目录结构不清晰(src : 源代码)
2.不同的IDE创建项目结构不一样,移植困难
3.项目依赖的jar占磁盘空间,jar版本冲突
4.项目构建周期(编译、测试、部署、运行)
maven:
src
-- main 运行
-- java : 源代码
-- resourses: 配置(资源)文件
-- test 测试
-- java 测试源代码
-- resources 测试配置(资源)文件
-- webapp view
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
项目构建是指项目从编译、测试、运行、打包、部署整个过程都交给maven进行管理;
一键构建是指maven集成了tomcat插件,使用maven一个命令就可以轻松完成整个工作;
一、maven的安装(window下)
1.解压压缩包(以apache-maven-3.3.9-bin.zip为例)
2.添加环境变量M2_HOME,值为apache-maven-3.3.9的安装路径(依赖jdk,需先配置JAVA_HOME)
3.在Path环境变量的变量值末尾添加%M2_HOME%\bin;
4.在cmd输入mvn –version或mvn -v,如果出现maven的版本信息,说明配置成功。
二、对maven进行配置
1.本地仓库配置
从中央仓库下载的jar包,都会统一存放到本地仓库中。
默认放在当前用户目录下的.m2目录(C:\Users\Administrator.m2\repository)
我们可以更改本地仓库的位置。
打开maven安装目录,打开conf目录下的setting.xml文件。
可以参照以下配置本地仓储位置。
<localRepository>E:\repository\maven\repo</localRepository>
2.配置中央仓库镜像mirror
有时候默认的镜像地址属于国外网站导致访问不畅,所以有必要进行替换。
国外
<mirror>
<id>mirrorId</id>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
国内
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
这样,所有的 jar 包依赖项都会从新指定的 url 中下载。
三、maven常用命令
a.mvn clean
清除项目之前运行生成的文件(target)
b.mvn compile
编译项目,但不会编译test目录下的源代码;
若项目是第一次编译,还会下载相关依赖包;
c.mvn test
编译项目,同时对test目录下的源代码进行编译;
d.mvn package
对项目进行打包,生成jar文件,打包前会进行编译;
e.mvn install
下载构建打包项目,并将生成jar安装到本地仓库
f.mvn deploy
部署项目
参考: https://www.cnblogs.com/shoshana-kong/p/11031388.html
IDEA中对maven的配置:
-DarchetypeCatalog=internal 表示:我们在未联网的情况下使用maven的模板时,从本地中找到之前联网时下载的插件来使用。
四、在IntelliJ IDEA中配置maven并构建web项目
选择后缀是webapp的模板
五、maven搭建多模块项目:
1.创建一个父工程
2.在父工程基础上,创建module
添加的配置为 archetypeCatalog=internal
maven解决了代码的可重用和可维护:
maven把一个完整的项目,分成了不同的独立模块,这些模块都有各自独立的坐标,我需要用到其中哪个模块,就直接引用该模块的坐标即可。
六、maven私服搭建
(作为了解,因为进入公司之后,公司不会等着你去搭建私服。。。)
nexus-2.12.0-01-bundle.tar.gz linux版本
nexus-2.12.0-01-bundle.zip windows版本
下面以window版本为例,进行maven私服搭建(远程仓库)
nexus安装和启动
1.解压nexus-2.12.0-01-bundle.zip(解压到没有中文没有特殊符号的目录中,解压后如下图所示:)
其中,nexus-2.12.0-01表示你nexus的安装包
sonatype-work 表示你搭建私服的远程仓库
2.进入nexus-2.12.0-01/bin目录中,找到nexus.bat文件(此为安装命令)
3.使用管理员身份运行打开cmd,运行nexus.bat文件
nexus.bat install 安装nexus
【补:nexus.bat uninstall】 卸载nexus
安装后,在服务中出现:
4.启动nexus
nexus.bat start
5.查看nexus-2.12.0-01\conf下 nexus.properties 文件
8081为nexus图形化界面的端口号(注意:别与其他程序端口号冲突)
浏览器访问: http://localhost:8081/nexus
这个页面需要登录,点击右上处 Log in:
用户名和密码为: admin – admin123
点击左侧菜单 repository
在右侧内容界面可看到repository相关信息:
hosted: 宿主仓库,部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分,Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
proxy: 代理仓库,用于代理远程的公共仓库,如 maven 中央仓库,用 户连接私服,私服自动去中央仓库下载 jar 包或者插件
group: 仓库组,用来合并多个 hosted/proxy 仓库,通常我们配置自己 的 maven连接仓库组
virtual(虚拟):兼容 Maven1 版本的 jar 或者插件(仅做了解)
私服的相关操作
1.如何将我们写的代码上传至私服仓库?
a.先让我们的工程能访问私服
b.找到你本机的maven安装目录中conf/settings.xml,在节点下添加:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
c.配置pom.xml (你需要将你的哪个工程jar上传到私服,就配置对应工程的pom.xml),直接添加至根目录
配置私服仓库的地址,本工程的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为 snapshot 则上传到私服的 snapshot 仓库
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:pom.xml 这里 和 settings.xml 配置 对应!
通过执行本工程的maven的deploy命令就可以将本工程jar包上传至私服仓库;
2.如何从私服仓库下载jar到本地仓库?
a.对本地maven/conf/settings.xml进行配置,在节点中
<!-- 下载jar包配置 -->
<profile>
<!--profile的id -->
<id>dev</id>
<repositories>
<repository>
<!--仓库id,repositories可以配置多个仓库,保证id不重复 -->
<id>nexus</id>
<!--仓库地址,即nexus仓库组的地址 -->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下载snapshots构件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories> <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
<pluginRepository> <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
添加上述配置后,还要进行激活,还是在settings.xml文件中,根节点下(通常放到最后)
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
注意:activeProfile 这里dev 和 上面profile 配置 对应!
以上就是关于maven私服中如何进行jar的上传和下载!!!
安装第三方jar包到本地仓库操作
安装第三方jar包到本地仓库
方式一:----进入jar包所在目录运行
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile=fastjson-1.1.37.jar -Dpackaging=jar
方法二:----打开cmd直接运行
mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=E:\my_java\third_jar\fastjson\fastjson-1.1.37.jar
–安装第三方jar包到私服
–在settings配置文件中添加登录私服第三方登录信息
<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>
方式一:进入jar包所在目录运行
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
方式二:打开cmd直接运行
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=E:\my_java\third_jar\fastjson\fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty