Java_构建工具

The Docs of java web class

构建工具

一、构建工具的作用

构建一个项目通常包含了依赖管理、测试、编译、打包、发布等流程,构建工具可以自动化进行这些操作,从而为我们减少这些繁琐的工作。

其中构建工具提供的依赖管理能够可以自动处理依赖关系。例如一个项目需要用到依赖 A,A 又依赖于 B,那么构建工具就能帮我们导入 B,而不需要我们手动去寻找并导入。

在 Java 项目中,打包流程通常是将项目打包成 Jar 包。在没有构建工具的情况下,我们需要使用命令行工具或者 IDE 手动打包。而发布流程通常是将 Jar 包上传到服务器上。

二、Java 主流构建工具

Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。

例如要在项目中引入 Junit,Maven 的代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?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>jizg.study.maven.hello</groupId>
   <artifactId>hello-first</artifactId>
   <version>0.0.1-SNAPSHOT</version>

   <dependencies>
          <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.10</version>
               <scope>test</scope>
          </dependency>
   </dependencies>
</project>

而 Gradle 只需要几行代码:

1
2
3
dependencies {
    testCompile "junit:junit:4.10"
}

三、Maven

我为什么要学习这个技术?

  1. 在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
  2. 如何能够让一个东西自动帮我导入和配置这个jar包。

由此,Maven诞生了!

概述

提供了项目对象模型(POM)文件来管理项目的构建。

仓库

仓库的搜索顺序为:本地仓库、中央仓库、远程仓库。

  • 本地仓库用来存储项目的依赖库;
  • 中央仓库是下载依赖库的默认位置;
  • 远程仓库,因为并非所有的依赖库都在中央仓库,或者中央仓库访问速度很慢,远程仓库是中央仓库的补充。

POM

POM 代表项目对象模型,它是一个 XML 文件,保存在项目根目录的 pom.xml 文件中。

1
2
3
4
5
6
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

[groupId, artifactId, version, packaging, classifier] 称为一个项目的坐标,其中 groupId、artifactId、version 必须定义,packaging 可选(默认为 Jar),classifier 不能直接定义的,需要结合插件使用。

  • groupId:项目组 Id,必须全球唯一;
  • artifactId:项目 Id,即项目名;
  • version:项目版本;
  • packaging:项目打包方式。

依赖原则

1. 依赖路径最短优先原则

1
2
A -> B -> C -> X(1.0)
A -> D -> X(2.0)

由于 X(2.0) 路径最短,所以使用 X(2.0)。

2. 声明顺序优先原则

1
2
A -> B -> X(1.0)
A -> C -> X(2.0)

在 POM 中最先声明的优先,上面的两个依赖如果先声明 B,那么最后使用 X(1.0)。

3. 覆写优先原则

子 POM 内声明的依赖优先于父 POM 中声明的依赖。

解决依赖冲突

找到 Maven 加载的 Jar 包版本,使用 mvn dependency:tree 查看依赖树,根据依赖原则来调整依赖在 POM 文件的声明顺序。

安装与使用

1、Maven项目架构管理工具

我们目前用来就是方便导入jar包的!

Maven的核心思想:约定大于配置

2、下载安装Maven

官网;https://maven.apache.org/

img

下载完成后,解压即可;

3、配置环境变量

在系统环境变量中

配置以下配置:

  1. MAVEN_HOME maven的目录
  2. 在系统的path中配置 %MAVEN_HOME%\bin
  3. img
  4. 测试Maven是否安装成功,保证必须配置完毕!

4、配置阿里云加速镜像

使用阿里云Maven中央仓库作为下载源,速度更快更稳定。

  • maven 安装目录的 conf/settings.xml

  • <mirrors></mirrors>标签中添加 mirror子节点

    1
    2
    3
    4
    5
    6
    
    <mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    

5、本地仓库

修改本地的仓库存放位置

  • maven 安装目录的 conf/settings.xml
  • <settings></settings>标签中添加 localRepository子节点,按个人习惯存放。
1
<localRepository>D:\maven\repository</localRepository>

6、在IDEA中使用Maven

1、启动IDEA

2、 创建一个MavenWeb项目

img

img

img

3、等待项目初始化完毕

img

4、检查IDEA中的Maven设置

img

6、到这里,Maven在IDEA中的配置和使用就OK了!

7、创建一个普通的Maven项目

img

img

只有在Web应用下才有的项目结构

img

8、标记文件夹功能

img

9、在 IDEA中配置Tomcat

1、添加tomcat

img

2、相关配置

img

3、关联网站

img

访问路径加了,访问的时候,在端口后面就是加上

例如:ip:端口/虚拟路径

img

启动tomcat

img

img

10、pom文件

pom.xml 是Maven的核心配置文件.

记录了项目具体依赖的Jar包的配置版本。

img

maven由于它是约定大于配置,之后可以能遇到写的配置文件不生效的问题。

解决方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

11、Maven仓库的使用

地址:https://mvnrepository.com/

img

点击进去,可以查看到使用的人数及版本更新时间

img

点击对应的版本,里面有maven引用的配置信息,复制到本地的POM.xml下,重新引用一下依赖,就可以导致对应的Jar包。

img

查询项目的依赖就导入进来了。img

img

Written by VastCosmic & Post in 泠境
Explore the Infinity Cosmos.
Built with Hugo
Designed By VastCosmic with Hugo Theme Stack