Maven配置

Maven

1、Maven:项目对象模型

2、配置环境变量

3、Pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- 版本:4.0.0 --> <modelVersion>4.0.0</modelVersion> <!-- 组织名称:暂时使用 组织名称+项目名称 作为组织名称 --> <!-- 组织名称:实际名称 按照访问路径规范设置,通常以功能作为名称: eg: junit spring --> <groupId>com.kkb.maven</groupId> <!-- 项目名称 --> <artifactId>HelloWorld</artifactId> <!-- 当前项目版本号:同一个项目开发过程中可以发布多个版本,此处标示0.0.1版 --> <!-- 当前项目版本号:每个工程发布后可以发布多个版本,依赖时调取不同的版本,使用不同的版本号 --> <version>0.0.1</version> <!-- 名称:可省略 --> <name>Hello</name> <!-- 依赖关系 --> <dependencies> <!-- 依赖设置 --> <dependency> <!-- 依赖组织名称 --> <groupId>junit</groupId> <!-- 依赖项目名称 --> <artifactId>junit</artifactId> <!-- 依赖版本名称 --> <version>4.12</version> <!-- 依赖范围:test包下依赖该设置 --> <scope>test</scope> </dependency> </dependencies> </project>

4、常用指令

mvn compile :编译

mvn clean:执行 mvn clean命令,执行完毕后,会将target目录删除。

maven package:执行 mvn package命令,完成打包操作 ;执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war。

mvn install:执行 mvn install命令,完成将打好的jar包安装到本地仓库的操作

5、修改本地仓库路径:

 <localRepository>D:\Maven\apache-maven-3.6.3-bin\maven_repository</localRepository>

6、maven坐标:

groupId:定义当前Maven组织名称
artifactId:定义实际项目名称
version:定义当前项目的当前版本或者是所依赖的jar包的版本
	<groupId>com.kkb</groupId> 
	<artifactId>demoProject</artifactId> 
	<version>0.0.1-SNAPSHOT</version>

7、依赖

<dependencies> 
    <dependency> 
    <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>4.10</version> 
        <scope>test</scope>
    </dependency> 
</dependencies>
scope属性值介绍: 
	1. compile 编译范围,默认scope,在工程环境的 classpath(编译环境)和打包(如果是WAR包,会包含在WAR包中)时候 都有效。
    2.provided 容器或JDK已提供范围,表示该依赖包已经由目标容器(如tomcat)和JDK提供,只在编译的classpath中加载和使 用,打包的时候不会包含在目标包中 。最常见的是j2ee规范相关的servlet-api和jsp-api等jar包,一般由servlet容 器提供,无需在打包到war包中,如果不配置为provided,把这些包打包到工程war包中,在tomcat6以上版本会 出现冲突无法正常运行程序(版本不符的情况)。
    3.runtime 一般是运行和测试环境使用,编译时候不用加入classpath,打包时候会打包到目标包中。一般是通过动态加载或 接口反射加载的情况比较多。也就是说程序只使用了接口,具体的时候可能有多个,运行时通过配置文件或jar包扫 描动态加载的情况。典型的包括:JDBC驱动等。
    4.test 测试范围,一般是单元测试场景使用,在编译环境加入classpath,但打包时不会加入,如junit
    5.system(一般不用,不同机器可能不兼容) 系统范围,与provided类似,只是标记为该scope的依赖包需要明确指定基于文件系统的jar包路径。因为需要通过 systemPath指定本地jar文件路径,所以该scope是不推荐的。如果是基于组织的,一般会建立本地镜像,会把本 地的或组织的基础组件加入本地镜像管理,避过使用该scope的情况。

8、依赖范围

在这里插入图片描述

总结: 
	(1) 当第二依赖的范围是compile的时候,传递性依赖的范围与第一直接依赖的范围一致。
    (2) 当第二直接依赖的范围是test的时候,依赖不会得以传递。
    (3) 当第二依赖的范围是provided的时候,只传递第一直接依赖范围也为provided的依赖,且传递性依赖的范围同 样为 provided; 
	(4) 当第二直接依赖的范围是runtime的时候,传递性依赖的范围与第一直接依赖的范围一致,但compile例外,此 时传递的依赖范围为runtime;
	
排除依赖:
	maven 的传递依赖能自动将间接依赖引入项目中来,这样极大地简化了项目中的依赖管理,但是有时候间接依赖 的关联包可以因为版本或其他原因,并不是我们想要的版本,那该怎么办呢? 这种做法就是排除依赖。那怎么实现排除依赖呢?实现排除依赖还是比较简单的,在直接依赖的配置里面添加 exclusions→exclusion 元素,指定要排除依赖的 groupId 和 artifactId 就行,如下面代码所示。
<dependency> 
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version> 
    <scope>test</scope> <exclusions>
    <exclusion> 
        <groupId>org.hamcrest</groupId> 
        <artifactId>hamcrest-core</artifactId> 
    </exclusion> 
    </exclusions>
</dependency>

9、maven的继承性

1、创建父工程
在这里插入图片描述

2、创建子工程
在这里插入图片描述
在这里插入图片描述

3、父工程统一管理版本号

父工程声明版本:
	<dependencyManagement>
        <dependencies>
            <dependency> 
                <groupId>com.kkb</groupId> 
                <artifactId>demo2</artifactId> 
                <version>1.0-SNAPSHOT</version> 
            </dependency> 
        </dependencies> 
</dependencyManagement>
子工程不需要指定版本号:
	<parent> 
        <groupId>com.kkb</groupId>
        <artifactId>father</artifactId>
        <version>1.0-SNAPSHOT</version> 
</parent> 
<dependencies>
    <dependency>
        <groupId>com.kkb</groupId> 
        <artifactId>demo2</artifactId><!--这里不需要指定版本--> 
    </dependency>
</dependencies>

4、父工程提取版本号:

当父工程中定义的jar包越来越多,找起来越来越麻烦,所以可以把版本号提取成一个属性集中管理

父工程:
	<properties> 
        <log4j.version>1.2.9</log4j.version> 
</properties>

子工程:
<dependencies> 
    <dependency>
        <groupId>junit</groupId> 
        <artifactId>junit</artifactId> 
        <version>${log4j.version}</version>
        <scope>test</scope> 
    </dependency> 
</dependencies>

10、maven的生命周期

(1) Clean Lifecycle: 在进行真正的构建之前进行一些清理工作。    Mvn clean
(2) Default Lifecycle: 构建的核心部分,编译,测试,打包,部署等等。    Mvn compile test package install deploy
(3) Site Lifecycle: 生成项目报告,站点,发布站点。
注意:直接运行 mvn clean install site 可以运行所有这三套生命周期。

10.1、default :构建项目

Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。这里,只解释一些

比较重要和常用的阶段:

validate 验证项目结构是否正常,必要的配置文件是否存在

initialize 做构建前的初始化操作,比如初始化参数,创建必要的目录等

generate-sources 产生在编译过程中需要的源代码

process-sources 处理源代码,比如过滤值

generate-resources 产生主代码中的资源在classpath中的包

process-resources 复制并处理资源文件,至目标目录,准备打包。

compile 编译项目的源代码。

process-classes 产生编译过程中生成的文件

generate-test-sources 产生编译过程中测试相关的代码

process-test-sources 处理测试代码

generate-test-resources 产生测试中资源在classpath中的包

process-test-resources 复制并处理资源文件,至目标测试目录

test-compile 编译测试源代码。

process-test-classes 产生编译测试代码过程的文件

test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。

prepare-package 处理打包前需要初始化的准备工作

package 接受编译好的代码,打包成可发布的格式,如 JAR 。

pre-integration-test 做好集成测试前的准备工作,比如集成环境的参数设置

integration-test 集成测试

post-integration-test 完成集成测试前的准备工作,比如集成环境的参数设置

verify 检测测试后的包是否完好

install 将包安装至本地仓库,以让其它项目依赖。

deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享

10.2、site:生成项目站点

Site生命周期

pre-site 执行一些需要在生成站点文档之前完成的工作

site 生成项目的站点文档

post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备

site-deploy 将生成的站点文档部署到特定的服务器上

11、maven插件

1、在pom.xml文件中插入:

<build>
    <plugins> 
        <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-compiler-plugin</artifactId> 
            <version>2.3.2</version> 
            <configuration>
                <source>1.8</source>
                <target>1.8</target> 
            </configuration>
        </plugin>
        </plugin>
</build>

2、修改maven的setting.xml文件:

<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>

3、tomcat插件:

a.创建maven类型的web工程

在这里插入图片描述

b.在pom.xml文件中添加如下信息:

<plugins> 
    <plugin> <!-- 配置插件 --> 
        <groupId>org.apache.tomcat.maven</groupId> 
        <artifactId>tomcat7-maven-plugin</artifactId>
        <configuration> 
            <port>8080</port> 
            <path>/</path> 
        </configuration>
    </plugin> 
</plugins>

c.:点击“add confifiguration”,按照图片中的步骤添加tomcat命令,运行tomcat插件

运行方式1:
	命令:tomcat:run 运行tomcat6(默认) 
运行方式2:
	命令:tomcat7:run 运行tomcat7(推荐,但是需要添加插件)

12、配置阿里云镜像

<mirror>
    <id>alimaven</id> 
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值