Maven笔记

一、简介

1、介绍

maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理。

就像是java的工具库,想用什么工具就在maven里面引入对应的依赖

瀑布模型:需求明确,传统开发模式,每一步按部就班。

敏捷开发:快速迭代,可以比较创新,需求不需要很明确,流行的开发模式。

2、项目构建

如果项目比较复杂的话,项目构建(build)会花很多时间,比方说有很多依赖,很多微服务。maven实现了这个过程的自动化,只需要一条命令就能像流水线一样完成。

3、工具

1️⃣ Ant构建

早期的构建工具,缺点是xml脚本编写格式让xml文件特别大,但在当时很流行,控制效果也很好,非常灵活。

2️⃣ Maven

**项目对象模型,通过其描述信息来管理项目的构建,报告和文档的软件项目管理工具。**填补了Ant缺点,并且首次支持从网络下载功能,使引入依赖变得非常非常方便快捷,仍然采用xml作为配置文件格式。Maven专注于依赖管理,使用java编写。

3️⃣ Gradle

结合以上两个的优点,继承了Ant的灵活和Maven的生命周期管理,被Google作为android御用管理工具。使用DSL格式,让脚本更简洁。

4️⃣ 总结

Ant比较早期,一些传统的软件公司会使用,Maven是目前主流的构建工具,gradle比较新型,未来有发展空间。

4、Maven四大特性

总结来说就是规定了一些规范,让依赖管理变得非常舒服。

1️⃣ 依赖管理系统

在java世界中,可以用groupId、artifactId、version组成的Coordination(坐标)唯一标识一个依赖。

① groupId

项目隶属的实际项目-公司名称。一个项目可能有多个模块

② artifactId

定义项目中的一个Maven模块-项目名,推荐的做法是使用实际项目名称作为artifactId的前缀,比如spring-bean

③ version

定义项目当前所处的版本

这样就能直接在网络上引入依赖,不需要下载到本地了,非常非常灵活方便。

2️⃣ 多模块构建

可以打一个pom包,然后构建子包,这样在父包引入的依赖所有子包都可以直接用,树形结构,非常棒。

3️⃣ 一致的项目结构

Conversion over configuration 约定大于配置,制定了项目目录标准,解决不同IDE文件目录不一致的问题。

4️⃣ 一致的构建模型和插件机制

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.1.2</version>
        </plugin>
    </plugins>
</build>

二、IDEA编辑器集成Maven环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ktGqJRcq-1632634543674)(C:\Users\caoyb\AppData\Roaming\Typora\typora-user-images\image-20210925213624862.png)]

这个地方可以全局配置自己的maven,我目前没感受到idea自带的有什么问题,先记录一下。

三、Maven项目的创建

1、Java项目

1️⃣ 创建Java项目

直接new Maven项目就行。

创建完之后,右下角弹出提示框,选择maven自动导入 "Enable Auto-Import"

2️⃣ 编译项目

创建一个configuration

然后就可以启动了

2、Web项目

换个模板即可,之前是quickstart,换成webapp

1️⃣ 启动项目

创建完需要做一些修改,在pom.xml里面jdk改成1.8 junit(单元测试)改成4.12 删除pluginManagement标签。

2️⃣ 添加web部署的插件

添加到build里面

① Jetty插件
<dependency>
            <groupId>org.eclipse.jetty.aggregate</groupId>
            <artifactId>jetty-all</artifactId>
            <version>9.0.0.v20130308</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-jsp</artifactId>
            <version>9.0.0.v20130308</version>
      </dependency>
<plugins>
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.3.7.v20160115</version>
                <configuration>
                    <httpConnector>
                        <port>8090</port>
                        <host>localhost</host>
                    </httpConnector>
                    <scanIntervalSeconds>1</scanIntervalSeconds>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
②Tomcat插件
<build>  
<plugins>
    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>  
        <artifactId>maven-compiler-plugin</artifactId>  
        <version>2.3.2</version>  
        <configuration>  
            <source>1.7</source>  
            <target>1.7</target>  
        </configuration>  
    </plugin>  
    <plugin>
   <groupId>org.apache.tomcat.maven</groupId>
   <artifactId>tomcat7-maven-plugin</artifactId>
   <configuration>
      <!-- 指定端口 -->
      <port>8000</port>
      <!-- 请求路径 -->
      <path>/erp</path>
   </configuration>
     </plugin>
</plugins>  
 </build>

启动命令换成jetty:run

四、Maven仓库的基本概念

Maven仓库分为两类:本地仓库和远程仓库

如果本地有直接用本地,没有去远程找,找不到就报错。

远程仓库分为三种:中央仓库,私服,其他公共库

中央仓库是默认配置下,Maven下载jar包的地方。

私服是一种特殊的远程仓库,在局域网架设一个私有的仓库服务器,用其代理所有外部的远程仓库,能节省带宽和时间,

可以在maven配置文件conf目录下的settings.xml来指定仓库路径。

1、中央仓库

由于原始的本地仓库是空的,maven必须知道至少一个可用的远程仓库,才能执行maven命令的时候下载到需要的构件。中央仓库就是这样一个默认的远程仓库。

2、私服

一种特殊的远程仓库,是架设在局域网内的仓库服务。当maven需要下载构件时,先去私服找,没有去外部远程仓库下载,然后缓存在私服上,为maven提供。

此外,也可以从本地上传到私服提供局域网中其他人使用。

也需要配置。

<repositories>
	<repository>
    	<snapshots>
        	<enabled>true</enabled>
        </snapshots>
        <id>public</id>
        <name>Public repositories</name>
        <url>http://xxxx:xxx/content/groups/public</url>
    </repository>
    <repository>
    	<id>getui-nexus</id>
        <url>http://mvn.gt.igexin.com/nexus/content/repositories/releases</url>
    </repository>
</repositories>

公司建立私服的好处:

  • 节省自己的外网带宽
  • 加速maven构建
  • 部署第三方控件
  • 提高稳定性
  • 降低中央仓库的负荷

3、其他公共库

常用的阿里云仓库配置

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

五、Maven的打包操作

1、 目录结构

不同环境不同目录

2、 添加Profile配置

3、设置资源文件配置

4、执行打包操作

直接在idea提供的可视化面板里操作生命周期即可

六、Maven依赖的基本概念

1、依赖的基本配置

2、依赖范围

根据环境判断依赖是否生效

3、传递性依赖

Maven能够解析间接依赖,以传递性依赖的形式引入到项目中,也就是说,当我们引入某个依赖的时候,不需要考虑他的依赖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值