Apache Maven:从构建到部署,一站式解决方案

简介: Apache Maven:从构建到部署,一站式解决方案

一、Maven介绍

1. Maven是什么?

       Maven是一个用于构建和管理Java项目的开源工具。它提供了一种标准化的项目结构、构建过程和依赖管理机制,使得开发人员能够更轻松地构建、测试和部署Java应用程序。

2.Maven的作用?

       传统工程我们直按把jar包放置在项目中,在真的项目开发中我们需要用到许多jar包,我们还需要把jar下载到本地然后放置在项目里,显然这样是很不方便的。而Maven工程把jar包放置在仓库中,项目中只用放置jar包的坐标(路径)。而用了 Maven 之后,需要什么包,直接在 pom.xml 中添加几行 xml 代码(添加所依赖jar包的坐标),指定包名、版本等,Maven就会自动从仓库里下载jar包。

pom.xml 解释:

Maven使用POM(项目对象模型)文件来描述项目的结构、依赖关系和构建配置。POM是一个XML文件,其中包含了项目的元数据、构建配置、依赖项和插件等信息。

二、Maven仓库介绍

        Maven库是指存储和管理Java项目依赖的仓库。它是Maven构建工具的核心组成部分,用于管理项目的依赖关系和版本控制。

2.1 库的分类

Maven库分为两种类型:本地库和远程库。

  1. 本地库:本地库是存储在本地计算机上的Maven仓库。当你第一次构建一个项目时,Maven会自动下载所需的依赖并将其保存在本地库中。之后,当你构建其他项目时,Maven会检查本地库中是否已经存在所需的依赖,如果存在则直接使用,避免重复下载。
  2. 远程库:远程库是存储在远程服务器上的Maven仓库。远程库又分为三种:
  1. 中央仓库:架设在Internet上,它是一个公共的、全球性的仓库,包含了大量的开源Java项目的依赖。
  2. 私服:一般用于公司,架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
  3. 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快响应用户请求。

使用Maven库的好处包括:

  • 管理依赖:Maven库提供了一个集中管理项目依赖的方式,简化了项目配置和构建过程。
  • 版本控制:Maven库可以确保项目使用的依赖版本一致,避免了版本冲突和兼容性问题。
  • 自动下载:Maven库可以自动下载项目所需的依赖,减少了手动下载和配置的工作量。
  • 缓存机制:Maven库会缓存已下载的依赖,提高了构建的速度和效率。

       总之,Maven库是一个重要的工具,可以帮助开发人员更方便地管理和使用项目的依赖,提高开发效率和代码质量。

三、Maven安装与配置

3.1 Maven安装

👉 点击进入 Maven官网下载Maven安装包

下载后得到的压缩包:

3.2 Maven环境配置

1. 解压Maven压缩包 --> 赋值有bin目录的路径

2. 进入电脑设置里的高级系统设置 --> 点击环境变量

3. 新建一个系统变量 将Maven路径粘贴上去

4. 配置环境变量 path

5. 打开cmd输入 mvc -version 进行测试如图下就是配置成功了

3.3 仓库配置

1. 配置本地仓库,新建一个文件作为仓库并复制其路径

2. 打开Maven文件下的conf文件夹下的settings.xm文件,找到localrepository(复制一个新的)将之前建的仓库路径放进去

3. 如果考虑到性能的话可以修改它的镜像换成阿里云镜像

<mirror>

  <id>alimaven</id>

  <name>aliyun maven</name>

  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>

  <mirrorOf>central</mirrorOf>        

</mirror>

<mirror>  

 <id>alimaven</id>  

 <mirrorOf>central</mirrorOf>  

 <name>aliyun maven</name>  

 <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>  

</mirror>

四、Eclipse与Maven配置

1. 进入Eclipse进入Preferences --> maven --> installation --> add

确定后要选择 Apache-maven-3.5.0

2. 设置当前电脑配置Maven 点击User settings: Browse... 更换之前配置的conf下的settings.xml文件

       最后就配置完成了,将来你要下载的jar包就会保存到之前创建配置好的文件夹里了(mvn_repository)

五、Maven项目测试

5.1 新建Maven项目步骤及注意事项

1. 在Eclipse里面新建一个Maven项目 Catalog选择Internal本地 --> 下面选择最后一个webapp

2. Group Id: 设置自己的用户id; Artifact Id:编写项目名称

3. 刚新建的Maven项目要下载各种工具,请耐心等待它下载完...

注意: 期间不要退出或关闭网络可能会下载失败,需要把本地仓库清空,重新配置下载。

5.2 解析Maven项目的目录结构

       新建的Maven文件的目录结构不全需要点击项目 --> Build Path --> Source 取消Allow的选项就可以展示项目完整目录结构了

5.3 Maven 依赖配置

1. 去中央库里找到 JSP API 资源

2. 点击进入2.0版本,复制 Maven JSP 依赖内容

3. 将所需要的依赖配置到 pom.xml 文件中,在其中你可修改依赖的版本保存就可以直接下载,下载好后就可以再本地仓库查看jar包了。是不是很方便😂

4. 修改web.xml配置,项目里面是2.多版本的我用的是3.1因此需要修改它的头部版本信息

<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_3_1.xsd"

        version="3.1">

5.4 测试pom.xml是否能通过编译

在pom.xml界面运行Maven test

        如果出现这个就是配置成功了,如果不是你就将本地仓库的文件和配置全删了重配,要么你知道是配置的哪个才出了问题,删了出问题的那个依赖就行了.

5.5 项目JDK与WEB版本修改

1. 右击项目 --> Preferences -->Project Facets 先把web和java选项取消再修改版本,修改后点击Apply在选择Dynamic Web 和 Java 。

2. 修改原来web项目的路径点击 Further configuration available 并勾选Generate点击ok后在Apply应用后保存并关闭

3. 完成以上步骤之后可能还是报错就要在pom.xml添加一个插件

<plugins>

       <plugin>

           <groupId>org.apache.maven.plugins</groupId>

           <artifactId>maven-compiler-plugin</artifactId>

           <version>3.7.0</version>

           <configuration>

               <source>1.8</source>

               <target>1.8</target>

               <encoding>UTF-8</encoding>

           </configuration>

       </plugin>

   </plugins>

4. 最后右击项目 Maven --> Update Project 修改项目就ok啦!

5.6 项目测试

这里编写了一个简单的sevlet跳转到index.jsp页面进行测试

package com.ycxw.web;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/HelloMavenServlet")
public class HelloMavenServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("hello,maven");
    request.getRequestDispatcher("/index.jsp").forward(request, response);
  }
}
相关文章
|
23天前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
67 5
|
23天前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
57 4
|
1月前
|
消息中间件 分布式计算 大数据
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
大数据-166 Apache Kylin Cube 流式构建 整体流程详细记录
63 5
|
1月前
|
存储 SQL 分布式计算
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
大数据-162 Apache Kylin 全量增量Cube的构建 Segment 超详细记录 多图
58 3
|
22天前
|
存储 数据挖掘 数据处理
巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践
随着数据湖技术的发展,企业纷纷探索其优化潜力。本文分享了巴别时代使用 Apache Paimon 构建 Streaming Lakehouse 的实践。Paimon 支持流式和批处理,提供高性能、统一的数据访问和流批一体的优势。通过示例代码和实践经验,展示了如何高效处理实时数据,解决了数据一致性和故障恢复等挑战。
103 61
|
1月前
|
Java 大数据 数据库连接
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
29 2
大数据-163 Apache Kylin 全量增量Cube的构建 手动触发合并 JDBC 操作 Scala
|
1月前
|
SQL 分布式计算 大数据
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
大数据-160 Apache Kylin 构建Cube 按照日期构建Cube 详细记录
42 2
|
1月前
|
SQL 消息中间件 大数据
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(一)
51 1
|
1月前
|
SQL 大数据 Apache
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
大数据-159 Apache Kylin 构建Cube 准备和测试数据(二)
81 1
|
1月前
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
325 0