Maven (1) 基础入门

297 阅读5分钟

1. 概念入门

概念: maven,意为专家,是Apache下的一个纯java开发的免费开源,跨平台的项目管理工具:

  • maven 可以对项目进行一键构建,每个命令都会以此执行之前的命令:
    • clean:清理,清理target文件夹下的class信息。
    • compile:编译,将java文件编译成class文件。
    • test:测试,测试代码正确性。
    • package:打包,java项目打jar包,web项目打war包
    • install:部署,项目自动部署到maven仓库中
  • maven 擅于集中管理项目依赖,在 pom.xml 中以坐标的方式引入中央仓库的依赖,自动下载,安全便捷。

2. 环境搭建

  • 软件下载:
    • 进入到 maven下载位置
    • 点击 Previous Releases 中的 archives 选择过往版本,如 3.6.0
    • 点击 binaries - apache-maven-3.6.0-bin.zip 进行下载。
  • 目录结构:
    • bin: maven相关的可执行程序,如 mvn.batmvnDebug.bat 等。
    • boot: maven运行需要的类加载器。
    • conf: maven运行需要的配置文件,如 settings.xml 等。
    • lib: maven运行需要的依赖jar包。
  • 环境搭建:
    • 使用maven的前提是JDK1.7+环境,且必须正确配置了 JAVA_HOME
    • 新建环境变量 MAVEN_HOME 为安装包根路径。
    • 添加环境变量 path%MAVEN_HOME%\bin
    • 通过 mvn -v 或者 mvn -version 命令检查maven是否安装成功。

3. 仓库配置

概念: 假设本地项目需要 a.jar,优先在本地仓库寻找,若有直接用,若无再去远程仓库寻找(假设已搭建),若有下载到本地仓库并使用,若无再去中央仓库寻找,若有下载到远程仓库,再下载到本地仓库使用,若无考虑 a.jar 是否收费,或为自行开发的jar资源:

  • 仓库分类:
    • 本地仓库:本地某个文件夹,需自行配置。
    • 远程仓库:一般用于多地团队开发,可以内网配置或外网配置。
    • 中央仓库:maven团队维护的仓库,服务于外网,地址为 http://repo1.maven.org/maven2
  • 配置本地仓库:默认在 C:\Users\Administrator\.m2\repository
    • 新建 D:\coder\java\maven\repos 目录,位置和取名随意。
    • 打开 conf/settings.xml,在 <settings> 中配置本地仓库位置。
    • <localRepository>D:\coder\java\maven\repos</localRepository>
  • 配置阿里云私服镜像:中央仓库下载速度过慢,可以配置阿里云等其他国内下载镜像:
    • 打开 conf/settings.xml,在 <mirrors> 中配置阿里云镜像内容。
  • 下载基本插件:CMD进入命令行:
    • mvn help:system:加载基本插件,提示 BUILD SUCCESS 表示完成。

配置: settings.xml

<!-- 阿里云仓库镜像 -->
<mirror>
    <id>alimaven</id>
    <mirrorOf>central</mirrorOf>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

4. 整合IDEA

流程:

  • File - Settings - Build, Execution, Deployment - Build Tools - Maven
  • Maven home directory 栏选择maven的根目录。
  • 勾选 User settings file 后的 Override,然后选择maven的 settings.xml 文件。
  • 勾选 Local repository 后的 Override,然后选择maven的正确仓库位置。
  • 点击 OK 确认修改,重启IDEA,否则不生效。

5. maven-jar项目

概念: 创建 com.joezhou.maven3-jar 项目:

  • 创建流程:
    • File - New Project - Maven - Next
    • 填写 GroupId 横坐标,项目包名。
    • 填写 ArtifactId 纵坐标,项目名。
    • 填写 Project name 本地项目名,默认纵坐标名。
    • 填写 Project location 项目存放位置,注意IDEA不生成项目名目录。
    • 点击 Finish,若提示文件目录不存在,询问是否创建,选择 OK 即可。
    • 新项目右下角提示,选择 Enable Auto-Import 自动导入maven配置。
  • 项目结构:
    • src/main/java:源代码文件存放位置。
    • src/main/resources:资源文件,属性文件存放位置。
    • src/test/java:单元测试文件存放位置。
    • pom.xml:maven的核心配置文件。
  • pom.xml 文件标签解析:
    • <project>:配置文件的根标签。
    • <modelVersion>:模型版本。
    • <groupId>:项目的横坐标。
    • <artifactId>:项目的纵坐标。
    • <version>:项目的版本,SNAPSHOT是快照版。
  • 项目开发:
    • pom.xml 中配置jdk的编译版本,默认JDK5。
    • src/main/java 中开发 HelloWorld.java

在maven窗口可以快速测试maven命令效果。

配置: 配置jdk的编译版本,默认JDK5。

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

源码: src/main/java/HelloWorld.java

6. maven-war项目

概念: 创建 com.joezhou.maven3-war 项目:

  • 创建流程:
    • File - New Project - Maven - 勾选 Create from archetype
    • 选择 org.apache.maven.archetypes:maven-artchetype-webapp,点击 Next
    • 填写 GroupId 横坐标,一般是公司的域名倒置,相当于包名。
    • 填写 ArtifactId 纵坐标,一般是项目名。
    • 检查maven信息,包括根目录,settings.xml 和仓库的位置。
    • 填写 Project name 项目名,默认自动填写纵坐标名称。
    • 填写 Project location 项目存放位置,注意IDEA不生成项目名目录。
    • 点击 Finish,若提示文件目录不存在,询问是否创建,选择 OK 即可。
    • 新项目右下角提示,选择 Enable Auto-Import 自动导入maven配置。
  • 项目结构:
    • src/main/java:源代码文件存放位置,需手动添加。
    • src/main/resources:资源文件,属性文件存放位置,需手动添加。
    • src/main/webapp:存放发布资源的。
    • src/main/webapp/WEB-INF:存放 web.xml 配置文件。
    • src/test/java:单元测试文件存放位置。
    • pom.xml:maven的核心配置文件。
  • pom.xml 文件标签解析,基础标签见上一章节:
    • <packaging>:项目类型,可选 jar 或者 war
    • <name>:项目的名称,作用在maven窗口,可删除。
    • <url>:项目的访问URL,可删除。
    • <properties>:项目配置根标签,其中可以自定义配置。
    • <project.build.sourceEncoding>:项目构建编码。
    • <maven.compiler.source>:项目编译的源码版本,修改为1.8。
    • <maven.compiler.target>:项目编译的字节码版本,修改为1.8。
    • <dependencies>:项目依赖集合设置的区域,子标签下一章节讲解。
  • 对项目进行部署,启动Tomcat,然后访问首页。

7. maven依赖

概念:

  • 引入仓库jar包:maven采用坐标的方式引入依赖:
    • <dependencies> 中可以设置多个 <dependency> 依赖标签。
    • <groupId>:指定横坐标,依赖所在包名。
    • <artifactId>:指定纵坐标,依赖名。
    • <version>:指定依赖版本号。
  • 调整jar包范围:<scope> 用来设置依赖的生效范围:
    • test:只在测试环境有效,如 junitspring-test 等。
    • runtime:只在运行时有效,如数据库驱动包。
    • provided:对tomcat中已提供的jar包进行设置,避免冲突。
  • 提取jar包版本:使用CMD命令将jar文件导入本地仓库并生成maven坐标:
    • mvn install:install-file -DgroupId=com.joezhou -DartifactId=ojdbc14 -Dversion=1.0 -Dpackaging=jar -Dfile=D:\ojdbc14.jar