MAVEN

Maven

Maven 是apache 旗下的一个开源项目 , 是一款用于管理和构建 Java 项目的工具

Maven的作用

**依赖管理:**方便快捷的管理项目依赖的资源( jar 包 ),避免版本冲突问题。

统一项目结构: 提供标准,统一的项目结构。

**项目构建:**标准跨平台( Linux , Windows , MacOS)的自动化项目构建方式。

//maven  命令
compile 编译
package  打包  打包后会放在target 文件下
clean  清理项目的生成文件,
install  将打包后的项目 安装到本地 maven 仓库 ,这使得其他项目可以依赖这个项目
test  运行项目的单元测试  
verify		它会执行在 “compile” 和 “test” 阶段之后的所有默认插件目标,确保项目的编译和测试都已经成功完成。然后,它会运行一些额外的验证任务,这些任务通常由特定的插件提供

Maven 概述

介绍: Apache Maven 是一个项目管理和构建工具,它基于项目对象模型( POM -Project Object Model)的概念,通过一小段描述信息来管理项目的构建。

官网: http://maven.apache.org/

仓库: 用于存储资源,管理各种 jar 包

  • 本地仓库:自己计算机上的一个目录。
  • 中央仓库:由 maven 团队 维护的全球唯一的。 仓库地址: https://repo1.maven.org/maven2/
  • 远程仓库(私服):一般由公司团队搭建的私有仓库。

Maven 安装

步骤:

①解压 maven 安装包 例如: apache-maven-3.6.1-bin.zip。

②配置本地仓库,修改 conf/settings.xml 中的 为一个指定目录。

<localRepository>E:/develop/apache-maven-3.6.1/mvn_repo	</localRepository>

③配置阿里云私服 , 修改conf /settings.xml 中的 标签,添加如下子标签:

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

④配置环境变量: MAVEN_HOME 为maven 的解压目录,并将其 bin 目录(%MAVEN_HOME%/bin) 加入 PATH 环境变量

通过 mvn -v 查看版本,来判断是否安装完成

IDEA 集成 Maven

配置Maven 环境

选择 IDEA 中的 File —》 Settings(设置)----》 build,Execution,Deployment(构建,执行,部署)—》Build Tools(构建工具) —》Maven

创建Maven项目

创建模块,选择Maven , 点击next

填写模块名称,坐标信息,点击 finsh 创建完成

编写 Helloworld 并运行

Maven坐标

什么是坐标?

  • Maven中的坐标是 资源的唯一标识,通过该坐标可以唯一定位资源位置。
  • 使用坐标来定义项目或引入项目中需要的依赖。

Maven 坐标的主要组成

groupId:定义当前 Maven 项目隶属组织名称(通常是域名反写 例如:com.itheima)

artifactId:定义当前 Maven 项目名称(通常是模块名称 例如order-service、goods-service)

version:定义当前项目版本号

导入maven 项目

选择右侧 maven 面板,点击 + 号 ,选中对象项目的 pom.xml 文件 双击即可。

依赖管理

  1. 依赖配置

    依赖: 指当前项目运行所需要的 jar 包,一个项目中可以引入多个依赖。

    配置:

    ​ 在pom.xml 中编写标签

    ​ 在 标签中,使用引入坐标

    ​ 定义坐标的 groupId,artifactId,version

    ​ 点击刷新,引入最新加入的 坐标

    注意事项:

    如果引入的依赖项,在本地仓库中不存在,将会连接远程仓库/中央仓库,然后下载依赖。

    如果不知道依赖的坐标信息,可以到 https://mvnrepository.com/ 中搜索。

  2. 依赖传递

    Maven 中的依赖是具有传递性的

    直接依赖: 在当前项目中,通过依赖配置建立的依赖关系

    间接依赖: 被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

    还可以排除依赖

    <exclusions>   排除的依赖   可以不加版本号
    	<exclusion>
        <groupId> *** </groupId>
         <artifactId> *** </artifactId>
        </exclusion>
    
    </exclusions>
    
  3. 依赖范围

    依赖的 jar 包 默认情况下 , 可以在任何地方使用。可以通过 …设置其作用范围。

    作用范围:

    主程序范围有效。 (main 文件夹范围内)

    测试程序范围有效。 (test 文件夹范围内)

    是否参于打包运行。 (package 指令范围内)

    scope 值主程序测试程序打包(运行)范例
    complie(默认)YYYlog4j
    test-Y-junit
    providedYY-servlet-api
    runtime-YYjdbc驱动
  4. 生命周期

Maven 中有三套 相互独立的 生命周期:

clean:清理工作

default: 核心工作,例如编译,测试、打包、安装,部署等。

site : 生成报告,发布站点等。

Maven 高级

分模块设计与开发

是什么?

就是将项目按照功能拆分成若干个子模块,方便项目的管理维护,扩展、也方便模块间的相互调用,资源共享。

为什么?

便于维护,可以复用组件

怎么做?

分模块开发需要先针对模块功能进行设计,再进行编码。不会先将工程开完完毕之后,然后进行拆分。

创建新的模块 选择 maven 就可以了 ,引入该模块自己所需要的依赖即可

然后需要该模块的模块,引入相关依赖就可以。

继承与聚合

继承:

**概念:**继承描述的是两个工程之间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承。

**作用:**简化依赖配置,统一依赖管理。

实现:…

所有 子model 都继承一个 父model ,这样就可以简化子model 的依赖配置

(在Maven 当中,一个工程/model 只能继承一个 父工程/model 但是可以多重继承)

步骤:

  1. 创建maven 模块 tlias-parent ,该工程为父工程,设置打包方式 pom (默认都是jar)

  2. 在子工程的pom.xml文件中,配置继承关系。
    继承父工程的坐标, 一旦实现继承关系,坐标中的groupId是可以省略的,因为会自动继承父工程的
    relativePath 指定父工程的pom 的文件的相对位置(如果不指定,将从本地仓库/远程仓库查找该工程)

  3. 在父工程中配置各个工程共有的依赖(子工程会自动继承父工程的依赖)。
    若子父工程都配置了同一个依赖的不同版本,以子工程为准。

版本锁定:

介绍: 在 maven 当中 我们可以通过在父工程的pom 文件中通过 来统一管理依赖版本。

<!--父工程 -->
<dependencyManagement>
	<dependencies>
    	<dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt</artifactId>
        <version>0.9.1</version>
        </dependency>
    </dependencies>

</dependencyManagement>


<!--子工程 -->
<dependencies>
	<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    </dependency>
</dependencies>

**注意事项:**子工程引入依赖时,无需锁定 版本号,父工程统一管理,变更以来版本,只需要在父工程中统一变更。

如果在父工程当中我们有大量的依赖,拥有许许多多的依赖版本,此时就会比较繁琐,还是不便于集中管理和控制,我们可以通过自定义属性来解决,在pom.xml文件中 通过

<properties>
	<lombok.version>1.18.24</lombok.version>
	<jjwt.version>0.9.0</jjwt.version>   
</properties>


此时的version 标签就可以通过  ${lombok.version} 来代替版本号  打括号里面就是标签属性名
例如:
			<dependency>
                <groupId>com.tele.toolkit</groupId>
                <artifactId>tele-toolkit-annotation</artifactId>
                <version>${tele-toolkit.version}</version>
            </dependency>

聚合:

我们在打包 工程 的过程中 可以发现 ,如果一个工程依赖了其他工程的jar 包 这时候我们就需要先把它所依赖的工程的jar包打包好,这样就十分复杂繁琐,所以我们要有一个聚合工程;

**聚合概念:**将多个模块组织成一个整体,同时进行项目的构建

**聚合工程:**一个不具业务功能的 “空”工程 (有且只有一个 pom 文件)

**作用:**快速构建项目 (无需根据依赖关系手动构建,直接在聚合工程上构建即可)

<!--maven中可以通过<modules> 设置当前聚合工程所包含的子模块的名称 -->
聚合:举例
<!--父工程  聚合工程上 -->
<modules>
		<module>border-common</module>
        <module>border-gateway</module>
        <module>border-auth</module>
        <module>border-services</module>
        <module>border-visual</module>
        <module>border-job</module>
</modules>


注意事项:聚合工程中所包含的模块,在构建的时候,会自动根据模块间的依赖关系设置构建顺序,与聚合工程中模块的配置书写位置无关。

继承与聚合:

作用:

  • 聚合用于快速构建项目;
  • 继承用于简化依赖配置,统一管理依赖

相同点:

  • 聚合与继承的 pom.xml 文件的打包方式 均为 pom , 可以将两种关系只做到同一个pom 文件中
  • 聚合与继承均属于设计型模块,并无实际的模块内容

不同点:

  • 聚合是在聚合过程中配置关系,聚合可以感知到参与聚合的模块有哪些
  • 继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

私服

**介绍:**是一种特殊的远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的中央仓库,用于解决团队内部的资源共享与资源同步问题

注意事项:私服在企业的项目开发中,一个项目/公司,只需要一台私服。

资源上传与下载

工程打包之后 ,带着上传资源的url地址,install 打包到本地仓库,通过setting.xml中的servers配置携带访问私服的用户名/密码 deploy 到私服

私服有三个仓库 central release snapshot

central: 这个仓库的jar 包 就是从中央仓库下载下来的 jar 包

release: 存放的都是项目组内部共享的资源,

snapshot: 存放的都是项目组内部共享的资源,

至于存release 还是 snapshot 和项目版本有关 (默认是 SNAPSHOT 版本)

  • RELEASE(发行版本):功能趋于稳定,当前更新停止,可以用于发行的版本,存储在私服中的RELEASE 仓库中。
  • SNAPSHOT(快照版本):功能尚不稳定,尚处于开发中的版本,即快照版本,存储在私服的 SNAPSHOT 仓库中。
<version>1.0.0-SNAPSHOT</version>  默认是这个

<!-- 不加或者加上RELEASE  就是发行版本-->
<version>1.0.0-RELEASE</version>
<version>1.0.0</version>

1、设置访问私服的用户名密码(在setting.xml中的servers中配置)

<server>
<id>maven-release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

2、IDEA 中的maven 工程的pom 文件中配置上传(发布)地址

<distributionManagement>
	<repository>
    	<id>maven-release</id>
    	<url>http://192.168.150.68:8808/repository/maven-release</url>
	</repository>
	<snapshotRepository>
    	<id>maven-snapshots</id>
    	<url>http://192.168.150.68:8808/repository/maven-snapshots</url>
    </snapshotRepository>
</distributionManagement>

3、设置私服依赖下载的仓库组地址(settings.xml中的 mirrors ,profiles中配置)

<mirror>
	<id>maven-public</id>
    <mirrorOF>*</mirrorOF>
    <url>http://192.168.150.68:8808/repository/maven-public</url>
</mirror>
<profile>
	<id>allow-snapshots</id>
	<activation>
		<activeByDefault>true</activeByDefault>
	</activation>
<repositories>
	<repository>
<id>maven-public</id>
<ur1>http://192.168.150.101:8081/repository/maven-pub1ic/</ur1>
		<releases>
		<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
	</repositories>
</profile>

打包部署

前端打包: 执行脚本 npm build ,

npm run build

打包之后会 生成一个dist 目录 ,我们需要在 nginx 上部署 前端

可以直接将 生成的dist 目录里面的东西 复制到 nginx 的 html 目录中(html目录中原先的东西可以删除)

启动 双击nginx.exe 文件即可, Nginx 服务器 默认占领 80 端口号。

更换nginx 的端口号 在conf 目录中 找到 nginx.conf 在里面大概36 行 找到默认端口,修改 listen的值

查看端口号占用cmd 命令       netstat  -ano | findStr  80  (查询哪个进程占用了80端口)
最后面一排是 pid  可以通过 任务管理器看是哪一个进程在占用。
nginx 目录介绍
conf		配置文件目录
contrib		
docs
html		静态资源文件目录
logs		日志文件目录
temp		临时文件目录
nginx.exe


后端打包

1、首先配置文件中的地址,不能使用localhost

2、在pom 中 加载 打包插件 点击 maven 的 package

<build>
        <plugins>
            <!-- springboot 打包插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

3、打包好之后,会生成一种 jar 包,需要把 jar 包放在服务器上面,最后通过命令运行 jar 包 (nohup)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值