03、工具篇--Maven

Maven

Maven是Apache旗下的一个开源项目,是纯Java开发的,只是用来管理Java项目的。

Maven具备如下优点:

管理外部/内部依赖的jar包
外部依赖版本不兼容造成的错误
良好的项目文件结构
自动化的编译,测试,打包,安装,部署等

Maven主要应用于大型项目,它可以将各个模块进行独立,可以提高开发效率。

一般在互联网项目的话都说按照业务来分,比如用户管理、订单管理、支付管理等。

传统的项目都说按照层级来分,Entity层、Dao层 、Service层、Web层。

Maven的下载地址:http://maven.apache.org/download.cgi

基本配置

环境变量

使用Maven之前,我们需要配置它的环境变量:

然后将MAVEN_HOME加入Path变量中:

%MAVEN_HOME%in

然后打开cmd命令行输入mvn -v命令查看版本号:

配置文件

打开Maven的安装目录,找到X:apache-maven-3.5.0conf下的settings.xml文件

1、修改仓库默认地址

<localRepository>/path/to/local/repo</localRepository>

Maven有三种仓库:

本地仓库:程序员自己维护。
远程仓库:由公司进行维护。
中央仓库:由Maven团队维护。

出现下载慢的情况可以修改Maven的仓库为阿里云仓库,右键项目 -> Maven -> open settings.xml来打开设置文件,在<mirrors>标签下加入以下内容即可。

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <!-- 阿里云仓库 -->
        <mirror>
            <id>alimaven</id>
            <mirrorOf>central</mirrorOf>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
        </mirror>
    
        <!-- 中央仓库1 -->
        <mirror>
            <id>repo1</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo1.maven.org/maven2/</url>
        </mirror>
    
        <!-- 中央仓库2 -->
        <mirror>
            <id>repo2</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://repo2.maven.org/maven2/</url>
        </mirror>
    </mirrors> 
</settings>

常用命令

命令 描述
mvn clean 清理命令,执行clean会删除target目录的内容。
mvn compile 将src/main/java下的文件编译为class文件输出到target目录下。
mvn test 测试命令,会执行 src/test/java下的单元测试类。
mvn package 打包命令,对java工程执行package打包成jar包,对于web工程则打包为war包。
mvn install 安装命令,执行install将maven打成jar包或war包发布到本地仓库。
mvn tomcat:run 一键启动Tomcat服务器,并部署项目。

我们还可以将不同生命周期的命令进行统一执行:

mvn clean package

IDEA-Maven

构建项目

1> 打开IDEA集成开发环境,然后选择:File -> Settings -> Build,Execution,Deployment -> Maven:

在这里可以设置Maven的版本号,配置文件路径和仓库位置。

2、然后我们使用Maven来创建项目,注意JDK必须在1.7以上:

3、点击Next进入下个界面,其中GroupId和ArtifactId<项目名>还有Version,这三个属性目的是标识你的项目的唯一性。

4、点Finish之后,Maven会根据刚才的配置创建一个基于Maven的Web App。

目录结构

以上就是Maven工程的目录结构,下面简单介绍目录的作用:

java文件夹:主要用于存储java的源代码。
resources文件夹:一般用来存放一些资源文件和配置文件。
webapp文件夹:用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用。

注意:所有的配置文件都必须放在resources文件下,代码则放在java目录下:

依赖管理

  • 添加依赖

    Maven项目中如果想引入Jar包,只需要打开pom.xml配置文件进行配置即可:

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </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>
</dependencies>

这样配置后,Maven会自动去下载相应的jar包。如果想打开搜索窗口可以使用快捷键:alt + insert -> Dependency即可

如果下载到本地的jar包无法自动补全,需要自己手动添加,非常影响效率。通过File->setting->maven->repositories,选择本地仓库更新索引即可。

除此之外,我们还可以在中央仓库中去查找:

http://maven.aliyun.com/nexus/#welcome
  • 依赖范围

    如果A依赖B,则需要在A的pom,xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:

依赖范围 编译 测试 运行 描述
compile yes yes yes 编译范围,在编译、测试、运行有效,默认依赖范围。
provided yes yes - 当jdk或者一个容器已提供依赖后使用,编译和测试需要,运行不需要。
runtime - yes yes 在运行和测试系统的时候需要,编译时不需要。比如jdbc驱动包。
test - yes - 测试范围依赖,在编译和运行时都不需要,只要在测试编译和测试运行需要。
system yes yes - 范围依赖和provided类似,但是必须指定本地系统jar路径,不推荐使用。

依赖范围一般通过<denpendency>下的<scope>标签配置:

<scope>provided</scope>
  • 坐标定义

    在pom.xml中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

<!--项目名称,定义为组织名 + 项目名-->
<groupId>com.legend</groupId>
<!--模块名称-->
<artifactId>MavenDemo</artifactId>
<!--当前项目版本号,snapshot为快照版本,release为正式版本-->
<version>1.0-SNAPSHOT</version>
<!--打包类型:
    jar:执行package会打成jar包
    war:执行package会打成war包
    pom:用于maven工程的继承,通过父工程设置为pom-->
<packaging>pom</packaging>
  • 基本配置

    pom.xml是Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:

<project>:文件的根节点。
<modelversion>:pom.xml使用的对象模型版本。
<groupId>:项目名称,一般写项目的域名。
<artifactId>:模块名称,子项目名或模块名称。
<version>:产品的版本号。
<packaging>:打包类型,一般有jar、war、pom等。
<name>:项目的显示名,常用于Maven生成的文档。
<description>:项目描述,常用于Maven生成的文档。
<dependencies>:项目依赖构建配置,配置项目依赖构建的坐标。
<build>:项目构建配置,配置编译、运行插件等。
原文地址:https://www.cnblogs.com/pengjingya/p/14995085.html