一. Maven的安装与配置

1. maven的下载


2. maven的安装

将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕

3. maven的配置环境变量

MAVEN_HOME=E:\apache-maven-3.2.1
Path=%MAVEN_HOME%\bin;… …

maven ansj 动态库_Maven

4. maven的目录介绍

maven ansj 动态库_maven ansj 动态库_02

4. maven的仓库的配置

Conf目录中有setting.xml配置文件: 配置本地仓库和远程仓库

  1. 配置本地仓库
    Setting.xml的 53行复制到55行
    H:\developer02\repository_maven\repository_maven\
  2. 配置远程仓库 (配置阿里云远程仓库 扩展)
    < mirror>
    < id>alimaven< /id>
    < name>aliyun maven< /name>
    < url>http://maven.aliyun.com/nexus/content/groups/public/< /url>
    < mirrorOf>central< /mirrorOf>
    < /mirror>
  3. 将/资料/本地仓库/xxx.zip 解压

5.maven的测试

打开cmd本地控制台, 输入 mvn -version

maven ansj 动态库_Maven_03

总结:

  1. maven的安装 解压到没有中文的目录-配置环境变量即可
  2. 仓库的概念(存放jar 和插件)
  3. Pom文件中配置坐标引入jar
  4. 本地仓库和远程仓库的配置 conf下的setting.xml文件中

三. 创建Maven项目

1.IDEA整合本地Maven项目

maven ansj 动态库_maven ansj 动态库_04


maven ansj 动态库_jar包_05

2.IDEA创建maven工程

1.创建空的工程

maven ansj 动态库_jar包_06

maven ansj 动态库_Maven_07

maven ansj 动态库_jar包_08

3.创建java无骨架项目

maven ansj 动态库_jar包_09

4. 创建web项目

a) 创建有骨架的 webapp骨架
b) 创建无骨架的 复制webapp目录,Pom.xml中设置打包方式为war

四.Maven的常用指令及依赖管理

maven的常用指令

清理:mvn clean    --删除target目录,也就是将class文件等删除
编译:mvn compile  --src/main/java目录java源码编译生成class (target目录下)
测试:mvn test    --src/test/java 目录编译
打包:mvn package  --生成压缩文件:java项目#jar包;web项目#war包,也是放在target目录下
安装:mvn install   --将压缩文件(jar或者war)上传到本地仓库
部署/发布:mvn deploy  --将压缩文件上传私服

maven ansj 动态库_Maven_10


Clean 清除 target (编译后的class文件)

Compile 编译 (生成target )

Test 测试 运行测试文件

Package 打包 target下生成jar

Install 安装 生成的jar传到本地仓库

2. maven插件

a) jdk插件 // java编译插件

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

b) tomcat7服务器插件 //配置Tomcat插件

<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
	    <path>/aaa</path>
	    <port>8888</port>
	</configuration>
</plugin>

3. POM依赖管理

< dependency>中的配置:
1)groupId、artifactId、version是依赖的基本坐标,缺一不可.
2)type:依赖的类型,比如是jar包还是war包等, 默认为jar,表示依赖的jar包
3) scope:依赖范围,意思就是通过pom.xml加载进来的jar包,来什么范围内使用生效,范围包括编译时,运行时,测试时
– compile:默认值,如果选择此值,表示编译、测试和运行都使用当前jar
– test:表示只在测试时当前jar生效,在别的范围内就不能使用该jar包。
– 例如:junit 。此处不写也不报错,因为默认是compile,compile包扩了测试
– runtime,表示测试和运行时使用当前jar,编译时不用该jar包。例如:JDBC驱动。
– provided,表示编译和测试时使用当前jar,运行时不在使用该jar了。例如:servlet-api、jsp-api等。【必须填写】
– system:表示我们自己手动加入的jar包,不属于maven仓库(本地,第三方等),属于别得类库的这样的jar包,只在编译和测试期生效,运行时无效。

以后常用到的: 默认不写compile , test , provided
需求:编写一个Servlet , 访问该Servlet ,让后打印一句话.
做法:

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
   <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
</dependency>

exclusions:排除依赖 (面试)

jar包冲突,关联引入
A项目 依赖 B项目,B项目 依赖 C项目,当使用A项目时,就会把B也给加载进来,这是传递依赖,依次类推,C也会因此给加载进来
两个B的版本不一样,将两个都加载进去就会引起冲突,这时候就需要使用exclusions这个属性配置了
添加如下配置 (在A中排除引入B依赖传递)

maven ansj 动态库_maven_11


< scope>provided< /scope>

maven ansj 动态库_maven ansj 动态库_12