前言 

1.依赖管理

在传统的Java项目开发中,如果当前项目依赖很多第三方jar包,我们就需要手动去网上载相应的jar包,放到当前lib目录下以供项目调用;

随着开发项目数量以及各个项目依赖包的逐渐增多,难以解决每个项目中第三方jar包之间的依赖关系,也难以对开发者电脑中所有Java项目的依赖jar包进行统一管理

于是我们使用Maven把开发者电脑中所有Java项目的依赖jar进行统一管理起来; 

2.项目构建

在本地开发环境中,IDEA内置了Maven可以帮助我们做Java项目的构建;

脱落本地IDE环境之后,Maven可以对Java项目进行

  • Maven项目的构建
  • 编译
  • 打包
  • 部署

 

一、Maven简介

Maven是一个项目管理工具,Maven的作用就是管理项目,主要体现在2个方面:

  • 依赖管理:   Maven可以对开发者电脑中的Java项目依赖的jar包进行统一管理

  • 项目构建:   Maven可以通过Maven命令完成整个项目构建流程

1.依赖包管理

以下是Maven管理第三方jar包的机制;

1.1.Maven本地仓库

Maven把当前项目所需要的jar包,统一存放在Maven本地仓库中,项目按需引入。

 

1.2.Maven本地仓库结构

Maven本地仓库按照目录分层的结构对第三方jar包进行统一保存,避免依赖包冲突;

 

1.3.Maven仓库类型

Maven的仓库分为

  • 本地仓库:   在开发人员使用的电脑中保存当前PC中所有Java项目所依赖的jar包。
  • 私服:          在公司内网服务器上保存jar包,本地仓库可以保存的依赖jar包有限时,可以去公司的私服去下载并存储到本地仓库。
  • 中央仓库:   在公网服务器上,存储着大量jar包。

2.Maven完成项目构建

Maven对1个Java项目构建的过程,称为项目的生命周期。

Maven可以通过Maven命令,完成1个项目的生命周期。 

 

2.1.Java项目生命周期

Java项目的生命周期分为3种,这3种生命周期可以是相互独立的。

每1个生命周期都包含了不同的命令属于同1套生命周期中的命令,执行后面的命令,前面的命令会自动执行。

例如:如果执行install命令,install前面的compile ----》test----》package也会自动执行。

1.清理生命周期(Clean Lifecycle)

在进行真正的构建之前进行一些清理工作。

clean

2.默认生命周期(Default Lifecycle)

项目构建的核心部分,包括编译,测试,打包,安装,部署。

compile ----》test----》package----》install----》deploy

3.站点生命周期(Site Lifecycle )

生成项目报告,站点,发布站点。

site

 

2.2.Maven命令

Maven通过以下命令,完成以上3种项目生命周期。

  • clean:         清理命令,执行clean会删除target目录, 即清理掉上一次项目构建产生的文件
  • compile:     编译命令,作用是将 src/main/java 下的文件(正式的java文件)编译为class文件输出到target目录下
  • test:           测试命令,作用是执行 src/test/java 下的测试类,并编译为class文件输出到target目录下
  • package:   打包命令,打的是所有的正式代码(src/main) 对于java工程执行package打成jar包,对于web工程打成war包
  • install:       安装命令,将打好jar包或者war包安装到本地maven仓库
  • deploy:      部署命令,将打好的jar包或war包部署到私服中

Maven在Linux平台进行构建

mvn clean -s pom.xml
mvn package -s pom.xml
mvn install -s pom.xml
mvn clean install -s pom.xml

2.3.依赖包的作用范围(scope)

很多情况下,我们需要精确控制一个依赖包,项目的哪1个生命周期中生效。

以避免一些不必要的依赖包,打包到jar/war包中。

为了实现这个功能,Maven为每个依赖包提供了作用范围,即依赖范围。

maven支持的依赖范围主要有下面几种:

  • compile: 默认依赖范围,作用域在编译、测试、运行时都有效。
  • test:作用域在测试时有效。编译和运行时不需要,比如:Junit。
  • provided:作用域在编译、测试时有效。运行时不需要,比如servlet-api被tomcat容器提供。
  • runtime:作用域在测试、运行时有效。编译时不需要,比如:jdbc的驱动包。

 

 

 

二、Maven安装

1.Maven下载

 

2.Maven目录结构

 

3.Maven安装测试

C:\Users\13220>mvn -v
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T19:57:37+08:00)
Maven home: D:\maven\bin\..
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: D:\JDK8
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"

 

4.Maven本地仓库位置配置

<localRepository>D:/maven_packages/m2/repository</localRepository>

 

5.Maven中央仓库位置配置

 配置为国内阿里云Maven仓库地址

 <mirrors>
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

 

6.Maven使用JDK版本配置

在配置完maven的jdk版本之后,maven会自动去网络上下载相应的JDK版本。

在项目开发阶段:maven项目编译时不会调用本地的JDK。

在项目运行阶段:但是当maven项目编译完成后,运行阶段会使用本地的JDK。

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

 

三、IDEA集成Maven

 

 

1.pom文件配置

每1个Maven项目都有1个pom文件,我们可以在这个pom文件中声明当前项目,需要的第三方依赖和插件的资源坐标。

    <!--jdk环境-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <!--依赖管理-->
    <dependencies>
        <!--数据连接相关-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.0</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
        </dependency>
        <!--json转换-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>

        <!--servlet jsp-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.3</version>
        </dependency>

        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

        <!--日志-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>
    
    
    <build>
        <plugins>
            <!-- 编译字符集控制 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
pom.xml

 

 

四、IDEA创建Maven工程

本章节介绍如何使用IDEA创建1个Maven项目。

 

1.导入JBLJavaToWeb插件

JBLJavaToWeb插件可以把1个普通的Maven项目转换成Maven Web项目;

 

 

2.Maven Web

 

  

 

参考

posted on 2022-01-02 19:18  Martin8866  阅读(267)  评论(0编辑  收藏  举报