什么是Maven?如何基于IDEA + Maven 搭建 JavaWeb 项目?教你一招搞定

一、前言

现在基于java开发的项目越来越多,而我们在做JavaWeb项目时,不可避免的需要导入各种各样的jar包。如果每次建立一个项目到把相应的jar包拷贝到项目中会显得非常的繁琐。这时候,如何去管理我们的jar包就显得非常的重要。通过maven来管理存放jar包的仓库,会使得我们的开发效率大大提升。

二、下载maven并配置相应的环境

在使用Maven前,对Maven进行配置

1.下载并解压下面的压缩包到一个没有中文,空格的目录下
链接:https://pan.baidu.com/s/1b4QWQnxDpNdxbX6Tl3B5fg
提取码:0fgk

然后在电脑随便哪个地方建立一个文件夹,名字命名为:repository,我这里是在c盘目录下建立的该文件。所以文件目录为:C:\repository

打开该文件的配置目录conf,在settings.xml文件中配置如下几个元素:

(1)添加本地仓库
指定localRepository,(maven用来保存jar文件的目录),即本地仓库的路径。


在这里插入图片描述

(2)添加阿里云的镜像,当你所填写的(G, A, V)坐标的jar包在本地仓库找不到时,他会根据坐标自动到这个地址下载,最终文件就下载到你的本地仓库了。

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

(3)配置全局JDK,即告诉maven用什么jdk去编译。

 <profile>  
      <id>jdk-1.8</id>  
      <activation>  
         <activeByDefault>true</activeByDefault>  
         <jdk>1.8</jdk>  
      </activation>  
      <properties>  
        <maven.compiler.source>1.8</maven.compiler.source>  
        <maven.compiler.target>1.8</maven.compiler.target>  
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>  
      </properties>   
    </profile>

如果不愿意配置,可以直接用我的setting.xml覆盖掉你的setting.xml文件:

链接:https://pan.baidu.com/s/13z40iGa1qHQPajGbsB1v2A
提取码:gjhy
2. 在IEDA中配置跟Maven的关联(只需要配置一次)

(1)File-->Settings


在这里插入图片描述

在Settings窗口中配置maven解压后的文件夹路径,以及settings.xml路径


在这里插入图片描述

(2)同样上面,还要在Other-Settings下的Default Settings里也配一下,跟上面一样。
在这里插入图片描述

(3)开启IDEA的快速自动编译功能(Settings和Default Settings都要配)


在这里插入图片描述

三、搭建Maven的web工程

1. File-New-创建Project,选择Maven,点击 Next

(1)第1次使用IDEA 创建项目,会报NO SDK,需要把本地的JDK根路径关联进来


在这里插入图片描述

(2)再建立maven项目。


在这里插入图片描述
2. 给项目指定(g, a, v)含义如下:

对于maven项目来说,坐标(G,A,V)就代表了一个依赖,到时候别人想导入我们自己的jar包时,如果我们发布到网上,别人也能根据(G,A,V)下载我们的jar包。


在这里插入图片描述
3. Project建好后,目录结构如下:
在这里插入图片描述
4. 修改pom.xml文件

1个maven项目建好后,首先就要改写pom.xml,把它所依赖的所有jar都通过代码引入到项目中,通过G,A,V来引入外部jar包。如果不清楚一个依赖的G,A,V,可以去网上查查找网址:https://mvnrepository.com/,我们把GroupId或者artifactid的关键字输进去,就能查到了。

在这里插入图片描述

另一种方法:
也可以到仓库中查看(G, A, V)坐标,例如: E:\maven\repository\mysql\mysql-connector-java \5.1.20

G:mysql 位于repository和A之间,可能有多级
A:mysql-connector-java --位于V的上一层,只有一级
V:5.1.20 --版本号,只有一级

以下文件配置都添加到<project> </project>标签内:
(1)设置项目打包时,打包成war文件,默认是bar文件。

<packaging>war</packaging>

(2)添加jar包。本项目需要的4个依赖(jar),mysql、servlet、jstl、JdbcTemplate依赖。数据源对应的坐标如下:

<!-- 设置配置文件(G,A,V)坐标 -->
    <dependencies>
        <!-- mysql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
        <!-- servlet相关的依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <!-- provided表示这个servlet的jar不参与到打包中,因为tomcat已经提供了servlet的jar包 -->
            <scope>provided</scope>
        </dependency>
        <!-- 阿里巴巴的连接池(数据源)比如:JDBCUtile会用到 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- JdbcTemplate依赖,为了避免用底层的jdbc连接数据库,简化代码 -->        
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.23.RELEASE</version>
        </dependency>
        <!-- jstl依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

注意:上面的添加jar包的代码中,添加servlet的jar包时多了<scope>provided</scope>是为了在打成架包的时候,不将该jar包打进去。因为服务器上有servlet的jar包,不需要重复导入。

(3)添加插件。添加tomcat插件,方便我们在写程序的时候运行代码,而不需要打包到外部服务器上运行,增加开发效率。还需要添加java编译插件,我们编写的class需要用到编译插件。

<!-- 设置插件 -->
    <build>
        <plugins>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 项目访问路径 -->
                    <path>/cour</path>
                    <!-- 访问项目的端口号 -->
                    <port>80</port>
                </configuration>
            </plugin>

        </plugins>

    </build>

最终我的代码如下:

<?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>com.hushi</groupId>
    <artifactId>couseSystem</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 项目 可以打成war包,默认是打包成jar包-->
    <packaging>war</packaging>

    <!--配置jar包-->
    <dependencies>
        <!-- mysql驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
        <!-- servlet相关的依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <!-- provided表示这个servlet的jar不参与到打包中,因为tomcat已经提供了servlet的jar包 -->
            <scope>provided</scope>
        </dependency>
        <!-- 阿里巴巴的连接池(数据源) -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.2</version>
        </dependency>
        <!-- JdbcTemplate依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.3.23.RELEASE</version>
        </dependency>
        <!-- jstl依赖-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

    <!--配置插件-->
    <build>
        <plugins>
            <!-- java编译插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <!-- Tomcat插件 -->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <!-- 项目访问路径 -->
                    <path>/cour</path>
                    <!-- 访问项目的端口号 -->
                    <port>8081</port>
                </configuration>
            </plugin>

        </plugins>

    </build>

</project>

四、利用Maven的编译插件把项目打成war包

4. 对Maven工程执行package命令,把整个工程打成一个war包

(1)点击右上角的package


在这里插入图片描述

(2)把产生的war包拷贝到外部的tomcat服务器的webapps目录中

(3)在tomcat的lib目录下找到start.bat文件,点击他就启动tomcat服务器,war包会自动解压变成一个目录

在这里插入图片描述

启动tomcat服务器后,浏览器中输入http://localhost/项目名,这里我是http://localhost/cs/index.html
结果如下:
在这里插入图片描述

五、利用Maven插件运行web项目(重点)

1. 在pom.xml中添加插件。

mavn的tomcat插件,它能够运行war包,这里在之前添加插件的时候已经添加该代码了。

<!-- Tomcat插件 -->
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <!-- 项目访问路径 -->
        <path>/cour</path>
        <!-- 访问项目的端口号 -->
        <port>80</port>
    </configuration>
</plugin>
2. 双击运行tomcat7插件的tomcat7:run
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

六、建立项目必须的文件

1. 建立文件

(1)在项目的main目录下建立webapp目录,再在webapp下建立WEB-INF目录。

(2)在webapp目录下编写我们的前端页面。这里我们建一个index.html文件。

(3)web项目中一定要有web.xml,web.xml是前端的配置文件。如何建立:https://www.cnblogs.com/Liang-Haishan216/p/9302141.html

最终结构如下图:


在这里插入图片描述

在这里插入图片描述

项目的虚拟目录是在Tomcat插件中指定的:


在这里插入图片描述

七、将外部的maven项目导入进来

在这里插入图片描述

八、将maven配置到电脑中(不是必须的,可以不配)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342

推荐阅读更多精彩内容

  • 第1章 Maven 介绍 什么是 Maven 什么是 Maven Maven 的正确发音是[ˈmevən],而不是...
    强某某阅读 2,366评论 0 25
  • Maven的基本了解 什么是Maven? Maven就是Apache下的一个开源项目。它是用纯java开发的。是一...
    Bcome阅读 2,770评论 0 7
  • 一.Maven是什么? Maven是一个跨平台项目管理工具,是使用Java语言开发的,可以对 Java 项目进行构...
    叫我不矜持阅读 1,160评论 0 12
  • Maven编译代码的相关命令 第一、main目录下的主代码编写完毕后,使用Maven进行编译,在项目根目录下运行命...
    加油小杜阅读 1,166评论 0 2
  • 在黄沙剑客四十九岁时,他发现了一个关乎他存在与否的重大问题——他,忘记了自己的名字。 江湖上人们都叫他黄沙剑客,他...
    胡萝卜和棒槌阅读 687评论 0 0