Maven

maven

      • Maven的使用
        • 一、引言
          • 框架的概念
          • 1.1 项目管理问题
            • 1.1.1 繁琐、复杂、冗余
          • 1.2 项目管理方案
        • 二、介绍
        • 三、Maven安装
        • 四、Maven配置
          • 4.1 本地仓库
          • 4.2 JDK配置
        • 五、仓库
          • 5.1 概念
          • 5.2 仓库分类
          • 5.3 仓库的jar包加载顺序[重点]
        • 六、Idea-Maven
          • 6.1 在Idea中关联Maven
          • 6.2 创建Maven项目
            • 6.2.1 新建项目
            • 6.2.2 默认工程结构
          • 6.3 导入依赖jar
            • 6.3.1 查找依赖
            • 6.3.2 导入依赖
            • 6.3.3 同步依赖
            • 6.4.1 打包方式
            • 6.4.2 web依赖
          • 6.5 部署web项目
          • 6.6 依赖生命周期
            • 6.6.1 概念
            • 6.6.2 使用方式
            • 6.6.3 生命周期详解
        • 七、Maven指令
          • 7.1 命令行
          • 7.2 Maven面板
        • 八、通过普通项目创建web项目
        • 九、导入依赖冲突的解决

Maven的使用

一、引言


框架的概念

框架一般是封装了一些代码,能够简化企业开发过程的工具。

1.1 项目管理问题

1、项目中jar包的管理

2、项目中的多层项目(多模块)的管理

1.1.1 繁琐、复杂、冗余

管理项目的jar包时,遇到以下问题

  • 版本的使用问题
  • 相同的jar包,不同的版本导入多次
  • 更换不同版本的jar时,需要比较麻烦的操作
  • jar来源问题
  • 版本依赖关系的管理
  • 相同的包占据大量的空间
1.2 项目管理方案

使用Maven或者相似的框架(gradle)来管理。

二、介绍


Maven,犹太语,意思是知识的积累。

作用:

  • 对包的管理,对jar包的管理,以及对项目的打包等。
  • 分模块开发项目。

三、Maven安装


1、下载并解压相应的压缩包,此处为apache-maven-3.3.9-bin.zip

2、将解压后的文件夹放入到一个没有中文和特殊符号的目录下

3、在该文件夹下的conf文件夹中找到settings.xml配置本地路径和阿里云公共仓库。在此处将提供的settings.xml覆盖原本的settings.xml,后面要改动本地仓库路径。

4、将提供的本地仓库repo.zip解压并放到maven文件夹中。(如果不提供本地仓库,会自动下载,但是由于网络原因可能导致失败。)

5、配置本地仓库路径。

四、Maven配置


4.1 本地仓库

配置本地仓库路径。在settings.xml中找到localRepository标签,将其内容修改成本地仓库路径。

注意:如果localRepository标签是在注释中,应该复制出来。

<localRepository>D:\apache-maven-3.3.9\repolocalRepository>
4.2 JDK配置

在 标签中 增加 一个 标签,限定maven项目默认的jdk版本.

内容如下:

<profiles>
    
	<profile>    
        <id>myjdkid>    
        <activation>    
            <activeByDefault>trueactiveByDefault>    
            <jdk>1.8jdk>    
        activation>    
        <properties>    
            <maven.compiler.source>1.8maven.compiler.source>    
            <maven.compiler.target>1.8maven.compiler.target>
            <maven.compiler.compilerVersion>1.8maven.compiler.compilerVersion> 
        properties>    
    profile>
profiles>

<activeProfiles>
    <activeProfile>myjdkactiveProfile>
activeProfiles>

五、仓库


5.1 概念

存储和管理jar包的空间。

5.2 仓库分类

仓库根据位置不同,有如下分类:

本地仓库:当前主机上保存jar包的仓库。

远程仓库:不在本地,而在服务器上,提供网络下载传输的仓库。

  • 中央仓库:指maven工具提供的最顶层的仓库。一般网络原因,导致可能下载失败。

  • 私服:公司内部或个人在服务器上搭建的仓库,可以提供给用户下载。【了解】

  • 公共仓库:由一些大公司提供的私服或者镜像,然后不需要密码即可访问。

5.3 仓库的jar包加载顺序[重点]

当项目中需要使用某个jar包,会先到本地仓库中查找,如果本地仓库有,则直接使用。

如果本地仓库没有,会先去远程仓库中的私服(公共仓库)中下载。如果私服中存在,则先下载到本地仓库,再使用。

如果私服中没有,则去中央仓库下载,如果中央仓库有,则下载到本地仓库并使用,如果中央仓库也没有,则无法下载,提示没有该jar包。

六、Idea-Maven


6.1 在Idea中关联Maven

在idea中有两个地方需要配置:

  • 需要在默认配置中配置,配置后所有的新建项目自动配置
    • 在File-> New Projects Settings -> Settings for New Projects -> Build… -> Build Tools -> Maven
    • 配置右边的Maven home Directory为maven的路径。
  • 需要在本地项目中配置。在Settings中配置,与上面配置一致。
6.2 创建Maven项目
6.2.1 新建项目

新建工程,指定工程类型为maven类型,不使用任何骨架(模板)。

工程名称:day51

GroupId:com.qf

ArtifactId:day51(与工程名称相同)

Version:1.0-SNAPSHOT

6.2.2 默认工程结构

src/main/java:源代码主目录

src/main/resources:源代码资源文件目录

src/test/java:单元测试目录

pom.xml:maven的核心配置文件


<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.0modelVersion>

    <groupId>com.qfgroupId>
    <artifactId>day51artifactId>
    <version>1.0-SNAPSHOTversion>

project>
6.3 导入依赖jar

如果需要做一个简单的数据库操作工程,需要导入依赖jar。

6.3.1 查找依赖

可以在官网查找依赖路径:

https://mvnrepository.com/

6.3.2 导入依赖

在pom.xml中添加一个标签:dependencies,在该标签中间来添加各种依赖。


<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.0modelVersion>

    <groupId>com.qfgroupId>
    <artifactId>day51artifactId>
    <version>1.0-SNAPSHOTversion>

    <dependencies>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.40version>
        dependency>
    dependencies>
project>
6.3.3 同步依赖

当添加依赖标签后,发现jar包并没有导入到工程中,需要刷新(同步)jar包。有以下两种方式:

  • 直接点击右上角M图标,刷新
  • 在pom.xml上右键,选择Maven-> Reimport

#####6.4 使用骨架创建web项目

常用的空骨架:

  • 创建普通工程使用:maven-archetype-quickstart
  • 创建web工程使用:maven-archetype-webapp

通过maven-archetype-webapp创建的web工程,需要手动新建java和resources目录。

注意:注意:注意:

默认创建的web.xml是2.3版本,默认不支持EL表达式,需要手动在jsp页面设置page指令中的isELIngore为false。

建议:将该web.xml替换为3.0以上的版本。

web.xml


<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
web-app>
6.4.1 打包方式

packaging:打包方式。

jar:打成jar包,一般给其他工程进行依赖。

war:一般是web项目使用,表示最终打包成war包,以放入到tomcat中运行。

pom:作为其他工程的父工程,不能单独使用。

<packaging>warpackaging>

jdk配置:

<properties>
    <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    <maven.compiler.source>1.8maven.compiler.source>
    <maven.compiler.target>1.8maven.compiler.target>
properties>

build标签中是指在maven使用过程中用到的一些插件。

6.4.2 web依赖

之前创建web项目时,都默认导入tomcat包中的servlet-api, 在maven的项目中,需要在pom.xml中导入该依赖,如下:

<dependency>
    <groupId>javax.servletgroupId>
    <artifactId>javax.servlet-apiartifactId>
    <version>4.0.1version>
    <scope>providedscope>
dependency>
6.5 部署web项目

点击右上角Edit Configration按钮,在弹出的窗口左上角点击+号,选择tomcat Server中的Local,然后在弹出的窗口右下角的fix按钮上点击,选择带有exploded的一项。

6.6 依赖生命周期
6.6.1 概念

是指当项目中依赖了一个jar包后,该jar包是在何时应用。

6.6.2 使用方式

在pom.xml中导入jar时,通过scope标签来配置该jar的生命周期。

<dependencies>
    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
        <scope>testscope>
    dependency>
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>4.0.1version>
        <scope>providedscope>
    dependency>
dependencies>
6.6.3 生命周期详解
标识 周期
compile 缺省值,适用于所有阶段(测试运行,编译,运行,打包)
provided 类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet-api.jar;适用于(测试运行,编译)阶段
runtime 只在运行时使用,如 mysql的驱动jar,适用于(运行,测试运行)阶段
test 只在测试时使用,适用于(编译,测试运行)阶段,如 junit.jar
system Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段

七、Maven指令


7.1 命令行

如果配置了环境变量,可以直接使用mvn命令,来操作maven的命令。

例如:

mvn -v

mvn clean等

7.2 Maven面板

View -> Tool Windows -> Maven或者直接点击idea窗口右边的maven按钮,打开maven窗口。

在LifeCycle中可以找到相应的命令。

运行命令的方式是右键后选择Run,或者直接双击该命令。

clean:删除所有编译后的文件,类似于前面直接删除out文件夹。

compile:编译所有文件。

test:运行项目中单元测试。

package:打包

install:将项目打包并上传到本地仓库。

deploy:将项目打包并上传到远程私服。

八、通过普通项目创建web项目

1、创建maven工程,不选择任何骨架。注意:修改groupId和artifactId。

2、在pom.xml中添加packaging,设置为war

3、打开Project Stuctrue -> 选择Modules,点击上面的+,选择添加Web。

4、通过右边的编辑按钮,来修改两个路径,将路径中包含src\main\webapp。修改完毕后,下面会有警告,点击警告后面的create Artifact按钮。

运行tomcat:

  • 点击右上角Edit Configration按钮,在弹出的窗口左上角点击+号,选择tomcat Server中的Local,然后在弹出的窗口右下角的fix按钮上点击,选择带有war exploded的一项。

九、导入依赖冲突的解决

当两个包同时依赖某个包,如果版本不一致,可能会导致版本冲突,此时,应该在不需要的包中排除该依赖。

<dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-contextartifactId>
    <version>4.3.18.RELEASEversion>
    <exclusions>
        <exclusion>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
        exclusion>
    exclusions>
dependency>

你可能感兴趣的:(Java程序设计,maven,java,apache)