小工具      在线工具  汉语词典  css  js  c++  java

Maven概述

maven,java,jar 额外说明

收录于:157天前

Maven是什么

Maven是Apache公司的开源项目,也是一个项目构建工具。用于管理项目。

  1. Maven 的好处

使用maven可以在项目中不用导入项目依赖的jar包,省去了下载和导入jar包的过程,使项目的大小得
到了缩减。

  1. Maven的两个核心

(1) 依赖管理:对项目需要使用到的jar包进行管理。
(2) 项目构建:项目在编码完成后,对项目进行编译、测试、打包、部署。

Maven仓库

Maven通过一个仓库来存放jar包,在Maven项目中,不再需要导入这些jar包,只需要告诉项目所依赖
的jar包的坐标,Maven就会自己将我们项目所需要的jar包给我们依赖进来。在maven中仓库有三种:
(1)本地仓库:本地仓库就在自己的机器上,我们可以在自己的机器上创建一个maven仓库,然后就
需要的jar包导入进去,就可以在项目中引用。
(2)中央仓库:中央仓库是最大的一个仓库,由Apache组织来负责维护,几乎包括了现在所有的jar包
(有一些涉及版权问题没有,比如:oracle数据库的连接jar包),但是中央仓库的访问速度非常慢。
(3)私服仓库:私服仓库在公司局域网内,公司可以在自己的局域网内创建一个仓库,将项目所需要
的jar包存放在此仓库中,这样整个项目组就都可以使用此仓库提供的jar包,不再需要在自己本地创建仓
库来保存jar包。

Maven 如何在存储库中查找包
Maven在仓库中查找jar包需要使用到jar的“坐标”信息:
公司名称groupId+项目名称artifactId +版本信息version

pom.xml

项目对象模型

<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>
<!-- 基本设置 The Basics -->
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
<packaging>...</packaging>
<dependencies>...</dependencies>


<parent>...</parent>
<dependencyManagement>...</dependencyManagement>
<modules>...</modules>
<properties>...</properties>
<!-- 构建过程的设置 Build Settings -->
<build>...</build>
<reporting>...</reporting>
<!-- 项目信息设置 More Project Information -->
<name>...</name>
<description>...</description>
<url>...</url>
<inceptionYear>...</inceptionYear>
<licenses>...</licenses>
<organization>...</organization>
<developers>...</developers>
<contributors>...</contributors>
<!-- 环境设置 Environment Settings -->
<issueManagement>...</issueManagement>
<ciManagement>...</ciManagement>
<mailingLists>...</mailingLists>
<scm>...</scm>
<prerequisites>...</prerequisites>
<repositories>...</repositories>
<pluginRepositories>...</pluginRepositories>
<distributionManagement>...</distributionManagement>
<profiles>...</profiles>
</project>

Maven安装

  1. 解压Maven
  2. 创建本地存储库

在这里插入图片描述
创建repository本地仓库。

  1. 修改配置文件settings.xml
<localRepository>D:/masterSpring/repository</localRepository><!--改为自定义仓库的目录-->
  1. 修改中央仓库镜像
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>

</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>google-maven-central</id>
<name>Google Maven Central</name>
<url>https://maven-central.storage.googleapis.com
</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>

</mirrors>
  1. 。 Idea中配置maven

在这里插入图片描述
在这里插入图片描述

Maven构建项目

标准maven项目结构:
在这里插入图片描述
配置环境变量后的项目构建命令:

在这里插入图片描述

Maven配置远程Tomcat

<build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    <plugins>
       
 
        <!-- Tomcat plugin-->
 
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <port>9000</port>   //配置Tomcat的访问端口
                <path>/spring5-webmvc-demo</path>   //配置Web的上下文路径
            </configuration>
        </plugin>
 
    </plugins>
</build>

依赖配置

在这里插入图片描述

分模块开发与设计

在Web开发中,MVC架构(表示层、数据链路层、持久层)都在同一个模块下,由相同或多个开发人员协作开发。在企业中,Web系统非常庞大,每个业务系统都是由几个人进行模块开发。这是在同一个模块下无法实现的。

Maven提供模块化开发,满足企业开发的需求。将MVC架构划分为不同的模块,通过pom实现私有服务器引用,从而满足多人协同开发。

在这里插入图片描述
在这里插入图片描述

以之前完全注解开的ssm项目为例:ssm完全注释开发

  • 域(pojo)的模块差异:

文件---->项目模块------>新建

在这里插入图片描述
Maven------>下一步
在这里插入图片描述
在创建完成后删除不必要的源文件目录或资源目录。

在这里插入图片描述

在这里插入图片描述
pojo模块也不需要导入任何依赖。

创建其他模块时,会出现错误。这是因为 pom.xml 中没有包含导入依赖项。只需根据需要导入它们即可:

在这里插入图片描述
当公共依赖导入后,pojo的对象还是报错,就需要导入自定义的模块依赖。依赖都是jar工具包,而模块是一个个的项目,该如何操作呢?
在这里插入图片描述
即该如何导入pojo的自定义模块呢?在使用maven构建工具时,可以使用mvn命令操作项目,需要哪个模块的工具包,就可以使用package命令将其打包为jar包。有了工具包该如何导入依赖呢?maven的install命令可以将jar包上传到本地仓库,那么就可以先打包再上传最后使用依赖导入就可以了。

在这里插入图片描述

Maven生命周期知道上传命令包含了前面的任务,直接上传命令install即可。

在这里插入图片描述
出现了jar包,在所需的模块按依赖规范导入即可。

在这里插入图片描述
在所需要的pom中导入该依赖。

在这里插入图片描述
在这里插入图片描述

导入自定义依赖后,POJO对象就可以正常使用了。

其他模块也是如此。

依赖管理

  1. MVC架构的不同层可以以模块的形式开发并协同工作。
  2. 每个模块必须先上传到本地仓库,然后才能通过导入依赖的方式在其他模块中使用。
  3. 当同一个资源出现在依赖中时,层次结构越深,优先级越低,依赖配置的位置越晚有覆盖权。

可选的依赖项
可选依赖是指对外隐藏所依赖的资源:

<dependency>
   <groupId>org.example</groupId>
    <artifactId>ssm_dao</artifactId>
    <version>1.0-SNAPSHOT</version>
    <optional>true</optional>
</dependency>

隐藏后,依赖关系不再具有传递性。需要重新导入引入此依赖项的下一个模块。

排除依赖关系
排除依赖是指主动断开依赖资源,不需要某个模块。

<exclusions>
    <exclusion>
        <groupId></groupId>
        <artifactId></artifactId>
    </exclusion>
</exclusions>

聚合与继承

在这里插入图片描述
各个模块之间存在依赖关系,往往会有同步更新,需要一个总的pom来管理直接模块。新建parent模块,来管理其他模块。**将打包方式改为pom,通过模块属性实现管理。

<?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>org.example</groupId>
    <artifactId>ssm_parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <!--设置管理模块名称-->
    <modules>
        <module>../ssm_config</module>
        <module>../ssm_controller</module>
        <module>../ssm_dao</module>
        <module>../ssm_pojo</module>
    </modules>



</project>

继承
在这里插入图片描述

当模块之间存在依赖关系,以及不同模块具有相同资源时,导入各个模块并保持版本一致是很麻烦的。同样,版本控制也可以由父模块来管理。

在子模块继承父模块通过parent属性:

    <parent>
        <artifactId>ssm_dao</artifactId>
        <groupId>org.example</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../ssm_parent/pom.xml</relativePath>
    </parent>

继承父模块的pom

继承的版本控制,在继承过程中,所有继承父类的模块都会出现在子类中,并且有些模块是独立的,不是public的,所以需要进行模块管理:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId></groupId>
                <artifactId></artifactId>
                <version></version>
            </dependency>
        </dependencies>
    </dependencyManagement>

继承的具体·步骤:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

属性管理

在每个依赖中都需要要导入版本,像spring的全家桶,版本都是一样的,如何需要修改的话每个都要改,pom提供了properties属性来进行批量版本控制。

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

        
        <!--自定义spring版本-->
        <spring.version>5.1.19.RELEASE</spring.version>
        
    </properties>

版本管理:

在这里插入图片描述

测试

在这里插入图片描述

. . .

相关推荐

额外说明

ReentrantLock源码分析

AQS是java concurrent包的基础,像Lock、CountDownLatch、Semaphore等都是基于它实现的。AQS是一个模板方法模式tryAcquire()、tryRelease()、tryAcquireShared()、tryRel

额外说明

【SpringCloud学习笔记】SpringCloud分布式开发五大组件详解

SpringCloud分布式开发五大组件详解 1、服务发现——Netflix Eureka Eureka服务端:也称服务注册中心,同其他服务注册中心一样,支持高可用配置。如果Eureka以集群模式部署,当集群中有分片出现故障时,那么Eureka就转入自我

额外说明

携程即将在三月实行3+2工作制,每周到岗上班3天、在家工作2天

携程集团将推出“3+2”混合办公模式新政策,从3月起,允许其员工在每周三、周五在家远程办公。该工作制度调整源于其创始人梁建章曾发起的混合工作制倡导,由携程女员工先行测试。 其称,设立新工作制度的目的,既是疫情防控所需,更为缓解员工照顾家庭、带孩子的压力,

额外说明

企业级实战——畅购商城SpringCloud-网站首页高可用解决方案-openResty+nginx+lua——OpenResty

QQ 1274510382 Wechat JNZ_aming 商业联盟 QQ群538250800 技术搞事 QQ群599020441 解决方案 QQ群152889761 加入我们 QQ群649347320 共享学习 QQ群674240731 纪年科技am

额外说明

布隆过滤器

1. 布隆过滤器概念 布隆过滤器(Bloom Filter)是一种空间效率很高的数据结构,用于快速检查一个元素是否存在于一个集合中。它基于哈希函数,可以快速进行元素的存在性查询,通常用于减少查询开销。 原理: 位数组: 布隆过滤器通常由一个位数组构成,初

额外说明

[Ext JS 7]7.6 内存泄露及处理

文章目录 内存泄漏概念 Ext JS的内存管理 内存分配层次 内存清除层次 侦测泄漏 应用层级泄漏 框架层级泄漏 常见代码泄漏模式和解决方案 遗漏基类清除 没有删除DOM监听 保留了对象的引用 保留了闭包的引用 持续创建有负面效果的实例 清除缓存中的所有

额外说明

TensorFlow学习笔记03:单变量线性回归

文章目录 机器学习系统 一、监督式学习基本概念 1、标签与特征 2、样本与模型 3、训练

额外说明

Golang 安装

学习目标 本文旨在帮助初学者了解 Golang 在不同环境下的安装方法,并提供相关资源和参考链接。 学习内容 安装 Golang on Windows 下载 Golang for Windows 安装包,地址:https://golang.org/dl/

额外说明

一、Vue.js介绍

一、介绍 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化

额外说明

Windows系统由于找不到mssprxy.dll文件导致功能异常

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个mssprxy.dll文件(

ads via 小工具