Maven


一.Maven介绍

1.1 什么是 Maven

Maven 的正确发音是[ˈmevən],而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词
语,代表专家、内行的意思。
一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模
型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管
理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标
(goal)的逻辑。

 Maven 是项目管理工具 对软件项目提供构建与依赖管理

Maven是Apache下的Java开源项目

1.2Maven 核心特性

项目设置遵循统一的规则,保证不同开发环境的兼容性

强大的依赖管理,项目依赖组件自动下载、自动更新

可扩展的插件机制,使用简单,功能丰富

Maven 的依赖管理:传统工程jar包放在项目中,maven开发的工程根据jar的坐标找到jar仓库。

仓库检索网站https://search.maven.org/

项目的一键构建:我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。

二. Maven 的使用

1.下载安装:

1.1下载并解压到D盘

Maven – Download Apache Maven

下载第二个

1.2添加环境变量

    变量名:MAVEN_HOME

    变量值:D:\apache-maven-3.8.1

    在Path中添加:%MAVEN_HOME%\bin

    确保环境变量中有JAVAHOME

   输入mvn -v

1.3本地仓库的配置 

MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置

  <localRepository>D:\Apache\repository</localRepository>

1.4设置maven编码为utf-8

设置环境变量

变量名 MAVEN_OPTS

变量值 -Xms256m -Xmx512m -Dfile.encoding=UTF-8

 运行mvn -v查看修改结果

2.maven项目标准目录结构

src/main/java目录     核心代码
src/main/resources 配置文件部分
src/test/java目录 测试代码部分,如 JUnit 测试类
src/test/resources 测试配置文件,如 spring, hibernate 配置文件
src/main/webapp 页面资源 ,js,css,图片等等
target 项目输出的目录,用于存储jar,war文件
target/classes 字节码(.class)的编译输出目录
pom.xml maven 项目核心配置文件

3.Maven常用命令

命令 用途
mvn archetype:generate 创建Maven工程结构
mvn compile 编译源代码
mvn test 执行测试用例
mvn clean 清除产生的项目
mvn package 项目打包
mvn install 安装至本地仓库

1.clean
clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。

2.compile
compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target
目录下。

3.test
test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。也会编译src/main/java的代码

4.package
package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war
包。

5.install
install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。会执行compile,test,package,把项目放在了本地仓库

4.Maven生命周期

5.Maven概念模型

项目对象模型 (Project Object Model)
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、
插件目标等。

赖管理系统(Dependency Management System)
通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,如下所示是 junit4.9
的依赖定义:

<!-- 依赖关系 -->
<dependencies>
	<!-- 此项目运行使用 junit,所以此项目依赖 junit -->
	<dependency>
		<!-- junit 的项目名称 -->
		<groupId>junit</groupId>
		<!-- junit 的模块名称 -->
		<artifactId>junit</artifactId>
		<!-- junit 版本 -->
		<version>4.9</version>
		<!-- 依赖范围:单元测试时使用 junit -->
		<scope>test</scope>
</dependency>

三.配置

pom.xml 是 Maven 项目的核心配置文件,位于每个工程的根目录,基本配置如下:
<project > :文件的根节点 .
<modelversion > : pom.xml 使用的对象模型版本
<groupId > :项目名称,一般写项目的域名
<artifactId > :模块名称,子项目名或模块名称
<version > :产品的版本号 .
<packaging > :打包类型,一般有 jar、war、pom 等
<name > :项目的显示名,常用于 Maven 生成的文档。
<description > :项目描述,常用于 Maven 生成的文档
<dependencies> :项目依赖构件配置,配置项目依赖构件的坐标
<build> :项目构建配置,配置编译、运行插件等。

1.设置Maven本地仓库路径

在setings.xml 文件<settings节点下添加  

  <localRepository>D:/maven_repositroy</localRepository>

2.坐标

 GroupId:机构或者团体的英文,采用 逆向域名 形式书写

ArtifactId:项目名称 说明其用途,例如:cms,oa...
Version: 版本号,一般采用 版本+单词 形式  例如1.1.0.RELEASE 

3.依赖范围

依赖范围 编译有效 测试有效 运行时有效 例如
compile Y Y Y spring-core
test   Y   Junit
provided Y Y   servlet-api
runtime   Y Y JDBC驱动
system Y Y   本地的,Maven仓库之外的类库

4.设置jdk版本

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

5.设置tomcat插件

	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat9-maven-plugin</artifactId>
            <version>2.2</version>
			<configuration>
				<port>8080</port>
              <path></path>
			</configuration>
		</plugin>
      </plugins>

6.Maven国内服务器

maven.aliyun.com    仓库服务 (aliyun.com)

1.选择public

2.在版本下添加依赖

<repositories>
    <repository>
        <!--创建私服-->
        <id>aliyun</id>
        <name>aliyun</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </repository>
</repositories>

四.idea 开发 maven 项目

1 打开FileSettings 配置 maven

-DarchetypeCatalog=internal在没网时会加载本地的

五.Maven聚合工程

1 Maven聚合工程概念

Maven聚合工程:就是可以在一个Maven父工程中创建多个组件(项目),这个多个组件之间可以相互依赖,实现组件的复用

2 创建Maven聚合工程

2.1 创建Maven父工程

Maven聚合工程的父工程 packing必须为 pom

  • 创建一个Maven工程

  • 修改父工程的pom.xml,设置打包方式为pom

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <modelVersion>4.0.0</modelVersion>
    ​
        <groupId>com.qfedu</groupId>
        <artifactId>maven-parent</artifactId>
        <version>1.0.0</version>
        <packaging>pom</packaging>
    ​
    </project>
  • 父工程用于管理子工程,不进行业务实现,因此src目录可以选择性删除

2.2 创建Module
  • 选择父工程---右键---New---Module

  • 输入子工程名称(g和v都从父工程继承)

  • 子工程的pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <!--module的pom继承 父工程的pom-->
        <parent>
            <artifactId>maven-parent</artifactId>
            <groupId>com.qfedu</groupId>
            <version>1.0.0</version>
        </parent>
    ​
        <modelVersion>4.0.0</modelVersion>
        <artifactId>common</artifactId>
    ​
    </project>
  • 父工程的pom文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <modelVersion>4.0.0</modelVersion>
    ​
        <groupId>com.qfedu</groupId>
        <artifactId>maven-parent</artifactId>
        <version>1.0.0</version>
    ​
        <!--  声明当前父工程的子module  -->
        <modules>
            <module>common</module>
        </modules>
    ​
        <packaging>pom</packaging>
    ​
    </project>

3 Maven聚合工程依赖继承

3.1 依赖继承
  • 在父工程的pom文件添加的依赖,会被子工程继承

3.2 依赖版本管理

在父工程的pom.xml的dependencyManagement中添加依赖,表示定义子工程中此依赖的默认版本(此定义并不会让子工程中添加当前依赖)

<!--  依赖管理:在dependencyManagement中添加依赖,表示定义子工程中此依赖的默认版本  -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.6.1</version>
        </dependency>
    </dependencies>
</dependencyManagement>


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM