maven(一)基础篇

maven(一)基础篇

  • maven安装
  • maven介绍
  • maven仓库
  • maven项目构建
  • 阿里代理镜像
  • maven scope
  • 依赖冲突
  • 修改默认的JDK编译环境
  • 添加tomcat插件

maven安装

1.去官网下载
官网链接
Maven 3.3+ require JDK 1.7
maven(一)基础篇_第1张图片
2.解压即可

3.环境配置
因为maven本身就是一个java程序,所以需要jdk环境
同时配置环境变量
MAVEN_HOME:安装目录
编辑环境变量Path,追加%MAVEN_HOME%\bin

4.检测maven安装是否成功
使用mvn -v查看信息
maven(一)基础篇_第2张图片

maven介绍

1.1 什么是Maven
Maven是项目管理工具
  Maven对项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。简单的来说Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),用来运行在生命周期阶段中插件目标的逻辑。

1.2 为什么使用maven
传统的方式是把jar放在lib下,有如下缺陷
(1)jar重复、冗余
(2)管理繁琐,不方便管理

1.3 maven两大核心
(1)依赖管理
(2)项目构建

maven仓库

在 Maven 的术语中,仓库是一个位置(place)。
Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。

1.本地仓库
Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。
默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

2.中央仓库
Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。
中央仓库包含了绝大多数流行的开源Java构件,以及源码、作者信息、SCM、信息、许可证信息等。一般来说,简单的Java项目依赖的构件都可以在这里下载到。
中央仓库的关键概念:
这个仓库由 Maven 社区管理。
不需要配置。
需要通过网络才能访问。

3.私有仓库
一般在公司内部搭建nexus私服,通过局域网实现依赖下载,不需要网络访问

maven项目构建

使用maven编译,清理,测试,打包,部署项目
1)编译 mvn compile 会生产一个target文件,target下面有一个classes文件夹存放的是我们编译好的类
2) 清理 mvn clean 把编译时生产的target文件夹删掉
3)测试 mvn test 生产的target下面有一个classes和test-classes,maven先帮我们编译项目,然后在执行测试代码
4)打包 mvn package target下面多了一个.jar文件
5)部署 mvn install target下面会有一个.jar文件,使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多

阿里代理镜像

<mirror>
            <id>nexus-aliyun</id>
            <mirrorOf>central</mirrorOf>
            <name>Nexus aliyun</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

maven scope

scope
compile :为默认的依赖有效范围。如果在定义依赖关系的时候,没有明确指定依赖有效范围的话,则默认采用该依赖有效范围。此种依赖,在编译、运行、测试时均有效。

provided :在编译、测试时有效,但是在运行时无效。例如:servlet-api,运行项目时,容器已经提供,就不需要Maven重复地引入一遍了。

runtime :在运行、测试时有效,但是在编译代码时无效。例如:JDBC驱动实现,项目代码编译只需要JDK提供的JDBC接口,只有在测试或运行项目时才需要实现上述接口的具体JDBC驱动。

test :只在测试时有效,例如:JUnit。

依赖冲突

当引入的两个依赖所关联的其他依赖中有冲突怎么解决?(依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突)

1.第一优先原则
谁出现在pom文件的前面就使用谁

2.路径原则
比如A依赖中有个c jar包,B依赖中有个c jar包,只是c jar包版本不一样
这时我们可以自己去声明一个c Jar包,这样就会使用我们自己刚刚声明的

3.依赖排除
比如A依赖中有个c jar包,B依赖中有个cjar包,只是c jar包版本不一样,这时可以排除A依赖中的c jar包

<dependency>
<groupId>org.springframework</groupId> 
<artifactId>spring-context</artifactId> 
<version>5.2.7.RELEASE</version> 
<exclusions> 
<exclusion>
 <artifactId>spring-core</artifactId>
 <groupId>org.springframework</groupId> 
</exclusion> 
</exclusions> 
</dependency>

4.版本管理
声明版本号,以后统一在这里进行管理
4.0.2.RELEASE

使用
${spring.version}

修改默认的JDK编译环境

在pom.xml 下添加如下配置(Maven-设置默认Java编译版本1.5)
1.第一种方式放在pom文件(该项目生效)

<build>
 <plugins> 
<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId> 
<version>3.6.1</version>
<configuration>
 <source>1.8</source> 
<target>1.8</target> 
<encoding>UTF-8</encoding> 
</configuration> 
</plugin> 
</plugins>
 </build>

2.第二种方式在setting文件设置(全局生效)

<profile> 
<id>jdk1.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>

添加tomcat插件

再在pom.xml文件中添加tomcat插件,注意导入依赖的位置是在< plugins>< /plugins>标签中

<!-- 加入tomcat插件--> 
<plugin>
 <groupId>org.apache.tomcat.maven</groupId> 
<artifactId>tomcat7-maven-plugin</artifactId> 
<version>2.2</version> 
<configuration>
 <port>8080</port> <!-- 访问端口-->
 <path>/你的项目路径</path> <!-- 访问路径,一般就是你的项目名注意前面有个‘/--> 
</configuration>
 </plugin>

你可能感兴趣的:(java基础,maven,java)