maven管理工具
Maven解决的问题:
1. 使用maven前搭建项目需要引入各种jar包,并且还可能有jar包冲突的问题
解决jar包冲突的方式:
1. 第一声明优先原则
2. 路径近者优先原则. 直接依赖路径比传递依赖路径近.
直接依赖: 项目中直接导入的jar包,就是该项目的直接依赖包
传递依赖: 项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去.
3. 直接排除法(推荐)
使用<exclusions>标签,排除jar包下的依赖包(在dependency中使用)
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId></artifactId>
</exclusion>
</exclusions>
2. maven可以向ide一样,将代码编译为class字节码文件
3. 可以指定某个目录下的单元测试一次执行,明确知道哪些是有异常的.哪些对的.
4. 可以直接将java项目进行打包,一个命令解决
Maven的核心功能
1. 依赖管理: maven工程对jar包的管理过程.(节省磁盘空间,符合代码可重用)
jar包的坐标: 根据坐标去仓库寻找jar包并依赖
jar包的仓库: 存放和管理jar包的仓库
2. 一键构建: 项目的整个构建过程,使用maven一个命令可以轻松完成整个工作.
构建: 指的是项目从编译、测试、运行、打包、安装, 部署整个过程都交给maven进行管理,这个过程叫做构建
mvn tomcat:run ====> 运行项目
安装:
1. 下载: http://archive.apache.org/dist/maven/maven-3/
2. 解压: 注意路径没有中文,没有空格
3. 配置环境变量:
新建 MAVEN_HOME maven解压的路径
编辑 Path 新建 %MAVEN_HOME%\bin
4. 测试: cmd ===> mvn -v
maven仓库的种类:
1. 本地仓库(默认是c盘,建议修改)
重新指定本地仓库: <localRepository>指定文件夹</localRepository>
2. 远程仓库(私服)
3. 中央仓库(几乎所有开源的jar包)
> 仓库间的关系:
启动maven工程,maven会通过pom文件的jar包坐标去本地找对应jar包
默认情况下,如果本地仓库没有jar包,会自动去中央仓库下载
在公司中,如果本地没有,会先从私服上下载,如果私服没有,可以从中央仓库下载,也可以本地上传
maven的标准目录结构:
web工程(java工程只包含前四个):
src/main/java ----> 核心代码部分
src/main/resources ----> 配置文件部分
src/test/java ----> 测试代码部分
src/test/redources ----> 测试配置文件
src/main/webapp ----> 页面资源
maven的常用命令
mvn clean ===> 删除编译好的本地项目信息(删除target目录)
mvn compile ===> 将src/main/java代码进行编译放置在target目录下
mvn test ===> 编译src/main/test和src/main/java下的java代码
mvn package ===> 将项目进行打包(同时会编译)放在target目录下(至于是war包还是jar包由pom.xml中的配置决定)
mvn install ===> 将代码进行编译并打包,并把包放在本地仓库下
mvn deploy ===> 部署项目,包含了前面5个命令
maven的生命周期(3套)
清理生命周期
清除项目编译信息 ====> clean
下面的五个命令就是一个默认的生命周期,执行后面的命令前面的命令也会执行一遍
编译 ====> compile
测试 ====> test
打包 ====> package
安装 ====> install
发布 ====> deploy
站点生命周期(知道有这个概念就好)
maven的概念模型图
maven与idea的集成
1. idea的configure下的setting选项配置本地的maven和settings的路径
2. maven下的 runner选项下配置
VM Options -DarchetypeCatalog=internal
maven项目的聚合,拆分和依赖(对于概念不是很了解,只知道用法)
简单来说就是将一个项目分成多个模块.
1. 工程和模块的区别:
1. 工程不等于完整的项目,模块也不等于完整的项目,完整的项目看的是代码的完整性,代码完整就是一个完整的项目.
和此项目是工程和模块没有任何关系.
2. 工程天生只能使用自己内部的资源,工程天生是独立的.但是后天可以和其他项目和模块产生关系
模块天生不是独立的,模块天生是属于父工程的,模块一旦创建,所有父工程的资源都可以使用.
3. 父子工程之间,子模块天生集成父工程,可以使用父工程所有资源.
子模块之间天生没有任何关系.但是可以使用dependency产生关联.
4. 父子工程之间不用建立关系,继承关系是先天的,不需要手动建立.
5. 平级之间的引用叫依赖,依赖不是先天的,依赖是需要后天建立的.
2. 提供一个ssm整个的聚合拆分模板,可以去下载(使用的坚果云)
https://www.jianguoyun.com/p/DUv6DuEQ7sKPBxjetHs
maven运行环境修改
1. tomcat7插件:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!--指定端口号-->
<port>8080</port>
</configuration>
</plugin>
2. jdk8插件
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
私服的搭建和基本使用
1. 命令行窗口(管理员身份运行)
2. 切换到解压缩后的bin目录
nexus install ====> 安装
nexus uninstall ====> 卸载
3. 访问: 默认端口号是8081
localhost:8081/nexus
4. 仓库的类型:
* proxy: 代理仓库,主要代理远程的仓库,私服和远程仓库之间的连接
* group: 仓库组,通常包含了多个代理仓库和宿主仓库,在项目中只要引入仓库组就可以下载到代理仓库和宿主仓库中的包
* hosted:宿主仓库,内部项目、付费jar
1. releases 发布内部release版本的仓库(正式版本)
2. snapshots 发布内部snapshots版本的仓库(测试版本)
3. third 自建第三方jar
5. 上传jar包到私服:
先配置本地maven的配置文件:
servers标签内部配置:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
maven项目的pom.xml的配置:
<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>
之后使用deploy命令就可以将项目进行部署,并打包,将包上传到nexus私服.
6. 从nexus下载jar包配置:
<profiles>
<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>
</profiles>
<activeProfiles>
<activeProfile>xdclass</activeProfile>
<activeProfile>dev</activeProfile>
</activeProfiles>
7. 安装第三方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=D:\fastjson-1.1.37.jar(切换成自己的目录)
8. 安装第三方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直接运行(指定自己的jar包)
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=C:\fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty
maven管理工具的更多相关文章
- maven管理工具配置
1.登录maven.apache.org,下载maven.,选择apache-maven-3.6.2-bin.zip,并解压到所需目录. 2.进行环境配置,计算机右击--属性---高级系统配置---环 ...
- Eclipse下安装及配置maven项目管理工具
①eclipse下maven插件安装. 本地maven安装.环境变量配置完成后,打开eclipse,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven ...
- IntelliJ IDEA 开发工具项目maven管理
今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...
- Java基础-Eclipse第三方安装包管理工具之Maven
Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...
- 【Tool】Windows系统安装Maven依赖管理工具
安装Maven依赖管理工具 官网下载地址:http://maven.apache.org/download.cgi 系统环境要求: [JDK]Maven3.3版本+需要JDK1.7版本以上支持 [内存 ...
- Maven管理 划分模块
转载地址:juvenshun.iteye.com/blog/305865 “分天下为三十六郡,郡置守,尉,监” —— <史记·秦始皇本纪> 所有用Maven管理的真实的项目都应该是分模块的 ...
- NodeJS包管理工具——npm入门
如今每个语言体系中都有一个包管理工具,PHP的Composer,Ruby的gem,Python的pip,Java的Maven……当然还有Node.js的npm.有的人会奇怪为何要引入又一个新东西来让我 ...
- mac os x 10.9.1 安装 Homebrew软件包管理工具及brew安装maven3.1.1
Mac OSX上的软件包管理工具,安装软件或者卸载软件. 打开终端输入(如不行,可参考homebrew官网): ruby -e "$(curl -fsSL https://raw.githu ...
- 使用Maven管理Spring
原文链接: Spring with Maven原文日期: 2013年04月17日翻译日期: 2014年06月29日翻译人员: 铁锚 1. 概述本教程向您展示怎样通过 Maven 管理 Spring 的 ...
随机推荐
- 用可道云kodexplorer在dedecms系统网站上秒建私人网盘
国内草根站长用的最多的一款建站源程序就是dedecms,通常是通过FTP或者服务器面板自带的文件管理器来上传下载的.FTP可视性.体验都相对差一点,且需要事先安装FTP软件,更换环境后的站点管理上有很 ...
- 如何掌握 Kubernetes ?系统学习 k8s 的大纲一份
深度剖析 Kubernetes 深度剖析 k8s 如何学习 Kubernetes ?如何入门 Kubernetes? 为了帮帮初学者,2018 年 InfoQ 旗下(就是你知道的那个 InfoQ 哇) ...
- CUDA、CUDNN在Mac Book Pro上安装的问题
由于原版MacOS自带Nvidia驱动版本过低,导致最新版本CUDA安装后无法运行.具体症状为:在编译时一切正常,在运行CUDA相关程序时报错: CUDA driver version is insu ...
- php在数组中判断某个值是否存在
php在数组中查找指定值是否存在的方法有很多,记得很久以前我一直都是傻傻的用foreach循环来查找的,下面我主要分享一下用php内置的三个数组函数来查找指定值是否存在于数组中,这三个数组分别是 in ...
- Laravel路由除了根目录全报404错误
Route::get('hello',function(){ return 'Hello World!'; }); 在laravel/app/Http/routes.php下添加上面的语句,然后再浏览 ...
- [BUAA OO]第四次博客作业
一. 测试与正确性论证的区别 在最后一个单元的OO作业中,我们主要进行了代码的测试与正确性论证工作.这俩者在作业中的体现分别是junit单元测试以及jsf论述语言.这两者在java代码开 ...
- Oracle Form Builder
Oracle Form Builder 是Oracle的一个开发工具,可以针对Oracle公司的E-Business Suit的ERP系统开发的.对应的还有reports builder. Oracl ...
- echart 插件实现全国地图
最近的项目要用到一个能展现全国地图的功能,并且全国各个省份显示的颜色不同,点击省份后会返回省份名称.经过反复的查找最终确定了echart这个插件,最后的成果还不错,在这里写下来希望对大家有所帮助.话不 ...
- CS学习
作者:匿名用户链接:https://www.zhihu.com/question/27368268/answer/36464143来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 为什么使彩色图变灰RGB的权重会固定(R:0.299 G:0.587 B:0.114)?
人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使用不同的权重将得到比较合理的灰度图像.根据实验和理论推导得出以下数值 R: 0.299. G: 0.587. B: 0.114.