精华内容
下载资源
问答
  • maven导入tomcat依赖包
    2020-11-23 10:31:22

    起因

    最近在开发一个小项目,在jsp页面使用pageContext发现pageContext下没有方法。于是去导入了包

    <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
    </dependency>
    

    然后光荣的爆红了error

    解决

    这个错误很有意思,它是由于pom导入的依赖和tomcat服务器lib中的依赖冲突导致。
    可以使用 <scope>provided</scope>解决

    <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
    	 <scope><provided</scope>
    </dependency>
    

    scope的解释

    provided表示在build,test阶段都有依赖,在runtime时并不输出依赖关系而是由容器提供,例如web war包都不包括servlet-api.jar,而是由tomcat等容器来提供
    引用自 https://blog.csdn.net/pengpengzhou/article/details/81743567

    补充

    更多相关内容
  • Maven的一个重要作用就是管理jar,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的jar,在Maven中,这些jar就被称,为依赖,使用标签dependency来配置。而这种依赖的配置正是通过坐标来定位的,由此...

    1、背景

    1.1 软件是一个工程

            我们在日常生活常能听到工程这个词,像桥梁工程、道路工程、南水北调工程等等。

            工程说简单点就是各个行业的从业人员通过总结规律或者方法,以最短的时间和人力、物力来做出高效可靠的东西。我们也就能理解桥梁工程,其实就是人们通过经验的总结和各种研究得出来的、用来修建桥梁时所采用的高效的方法,当然这种方法是可复用的。我们将这种作工程的思想应用到软件上,于是就产生了一软件工程。

            软件工程:为了能够实现软件的流水线式生产,在设计和构建软件时能够有一种规范和工程化的方法,人们便提出了软件工程概念。

    1.2 完成一个java项目,需要做的工作

    (1)分析项目要做什么,知道项目有哪些组成部分。

    (2)设计项目,通过哪些步骤,使用哪些技术.需要多少人,多长的时间.

    (3)组建团队,招人, 购置设备,服务器, 软件,笔记本..

    (4)开发人员写代码。开发人员需要测试自己写代码。重复多次的工作.

    (5)测试人员,测试项目功能是否符合要求.测试开发人员提交代码-如果测试有问题-需要开发人员修改--再提交代码给测试--测试人员再测试代码-如果还有问题-再交给开发人员-开发人员再提交-再测试直到-测试代码通过.  (多次重复的工作.

    1.3 在没有maven之前,开发一个java项目会遇到的问题

    (1)很多模块,模块之间有关系, 手工管理关系,比较繁琐

    (2)需要很多第三方功能,需要很多jar文件,需要手工从网络中获取各个jar

    (3)需要管理jar的版本, 你需要的是mysgl .5.1.5.jar 那不能给一个mysql.4.0.jar

    (4)管理jar文件之间的依赖, 你的项目要使用a.jar需要使用b.jar里面的类.必须首先获取到b.jar才可以,然后才能使用a.jar.

    说明:a.jar需要b:jar这个关系叫做依赖, 或者你的项目中要使用mysql的驱动, 也可以叫做项目依赖mysql驱动。或者比如 a.class使用b.class, a依赖b类

    1.4 为了改进项目的开发和管理,maven应运而生

    maven可实现以下作用:

    (1)maven可以管理jar文件

    (2)自动下载jar和他的文档,源代码

    (3)管理jar直接的依赖, a.jar需要b.jar , maven会自动下载b.jar

    (4)管理你需要的jar版本

    (5)编译程序,把Java编译为class  (构建)

    (6)测试代码是否正确.  (构建)

    (7)将你编写的类打包,形成jar文件,或者war文件  (构建)

    (8)帮你部署项目  (构建)

    总结:maven帮忙完成费时费力又麻烦的重复性工作,程序员就可以专心写功能型代码了。

    2、maven 构建  项目的构建       

       构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等.maven支持的构建包括有:

    (1)清理, 把之前项目编译的东西删除掉,为新的编译代码做准备。

    (2)编译, 把程序源代码编译为执行代码, 批量将.Java文件变成.class文件, maven可以同时把成千上百的.java文件编译为.class.(传统的javac一次只能编译一个文件)

    编译方法:maven工程所在的根目录下,启动cmd(直接windows文件目录那里输入cmd),然后输入命令 mvn compile

    (3)测试, maven可以执行测试程序代码,验证你的功能是否正确。maven同时批量执行多个测试代码,同时测试很多功能(传统的测试一次只能测试一个类,那要测试多久才能测试完啊)

    (4)报告, 生成测试结果的文件, 告知测试是否通过。

    (5)打包, 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件,通常Java程序,压缩文件是Jar扩展名的.对于web应用,压缩文件扩展名是.war

    (6)安装, 把(5)中生成的文件jar, war安装到本机仓库中

    (7)部署, 把程序安装好可以执行。  (一般不用maven部署)

    说明:开发中主要做1-6,不用maven部署,maven部署更复杂

    3、maven的安装和配置

    (1)从maven的官网下载maven的安装包apache-maven-x.x.x-bin.zip

    (2)解压安装包,解压到一个目录,非中文目录.

                子目录bin :里面有maven执行程序,主要是mvn.cmd

                子目录conf :里面有maven工具本身的配置文件settings .xml

    (3)配置环境变量在系统的环境变量中,指定一个M2_HOME的名称, 指定它的值是maven工具安装目录,(bin之前的目录)

    M2 HOME=安装目录  。再把M2_HOME加入到path之中,在所有路径之前加入%M2_HOME%\bin;4)验证,新的命令行中,执行mvn-v

    4、maven 核心概念 (maven中的术语)

    (1)POM    Project Object Module   项目对象模型

        一个文件名,名称是pom.xml,该文件控制maven构建项目的过程,管理jar依赖

    (2)约定的目录结构

        maven项目的目录和文件位置都是有规定的,不能随便乱放

    (3)坐标(gav)

        Maven把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库中可以唯一定位一个Maven项目。

    groupld:组织名,通常是公司或组织域名倒序+项目名

    artifactld:模块名,通常是工程名

    version:版本号

           需要特别指出的是,项目在仓库中的位置是由坐标来决定的、groupld, artifactid和version决定项目在仓库中的路径(groupId对应的包路径/模块名/版本号/jar包), artifactid和version决定jar包的名称。

        进入POM.xml文件,对坐标进行配置。

    (4)依赖管理

        用于管理项目中可以使用的jar文件

    (5)仓库管理(了解即可)

        资源存放的位置

    (6)生命周期(了解即可)

         maven构建项目的过程,就是生命周期。即完成清理、编译,测试,运行、打包等

    (7)插件和目标(了解即可)

        执行maven构建的相关命令时,比如清理,编译、打包等命令,实际是插件在运作。插件就是Maven的功能类。

    (8)继承

         和java继承类似,由父及子

    (9)聚合

            将多个项目汇总到一起

    4.1、maven工程约定的目录结构

    每一个maven项目在磁盘中都是一个文件夹(就相当于是IDEA项目的文件夹)

    JAVA工程名

    src
    main
    java各种包程序的包和包中的java文件
    resourcesjava程序需要的配置文件
    test放置测试程序的代码和配置文件(如果要求测试,允许没有测试文件)
    java各种包测试程序要使用的包和包中的java文件
    resources测试java程序需要的配置文件
    pom.xml maven的核心文件(maven启动后就通过这个文件了解该做什么)

    target

    (maven自动生成的

    结果目录)

    当对src中的java文件进行编译以后,maven自动生成这个文件夹用于存放编译后的class文件

    4.2 编译方法

         进入maven工程的根目录(pom.xml文件所在的位置),启动cmd(直接windows文件目录那里输入cmd),然后输入命令 mvn compile。就会编译main中的所有java文件,并自动在根目录新建一个target文件夹,将编译好的.class文件放入此文件夹。第一次编译,maven会下载一堆插件。

    疑问1 第一次执行时,为什么要下载那些插件

         maven工具执行的操作是通过很多特定功能的插件(java类--jar文件)来完成的,因此需要网上下载相关插件。

    疑问2 下载的插件存放到哪里了.

    默认仓库(本机仓库) :C:\Users\ (登录操作系统的用户名) Administrator\.m2\repository

    修改本地仓库方法(如果不想放在c盘):

          进入maven安装目录/conf/settings.xml(为了安全,先备份),然后进入settings.xml,找到<localRepository>xxx</localRepository>标签,将标签挪到注释外面,将里面的值改成新目录地址(比如F:/apache-maven-3.6.3)即可,注意,文件里面是 \ ,但是maven标签里面是 /,注意该斜杠方向。

    说明:maven默认是从中央仓库下载插件。中央仓库地址就在官网

    4.3 仓库

    (1)仓库是什么:仓库是存放东西的, 存放maven本身需要使用的jar包,和我们项目需要使用的jar包

          ① maven本身需要使用的插件(各种jar)

          ② 项目使用的Jar(第三方的工具),比如mysql,spring等jar包

    (2)仓库的分类

    ① 本地仓库,

           指个人计算机上的文件夹,存放各种jar

    ② 远程仓库, 在互联网上的,使用网络才能使用的仓库

        Ⅰ  中央仓库,最权威的,所有的开发人员都共享使用的一个集中的仓库(因此压力很大),中央仓库地址: https://repo.maven.apache.org

        Ⅱ  中央仓库的镜像:中央仓库的备份,在各大洲,重要的城市都是镜像.(为了缓解中央仓库的压力)

    说明:当我们项目需要jar包时,maven会先找各大洲maven的镜像,都找不到再去中央仓库

        Ⅲ 私服,在公司内部,局域网中使用的仓库,不对外使用。

    (3)仓库的使用

        开发人员需要使用mysql驱动,maven会首先查找本地仓库——>私服(如果有私服)——>各大洲的镜像——>中央仓库

    说明:maven全程自动完成。找到jar包以后,都会自动备份到私服和本地仓库。下次即可直接在本地访问。

    4.4 pom文件  Project Object Model

        pom文件即Project Object Model项目对象模型。Maven把一个项目的结构和内容抽象成一个模型,在xml文件中进行声明,以方便进行构建和描述, pom.xml是Maven的灵魂。所以, maven环境搭建好之后,所有的学习和操作都是关于pom.xml的。

    (1)pom.xml 概述

    modelVeisionMaven模型的版本
    坐标

    groupId

    (互联网唯一)

    组织id,一般是公司域名的倒写(互联网上域名唯一,所以倒写也唯一),格式可以为:
    1.域名倒写。 例如:com.baidu
    2.域名倒写+项目名。 例如:com.baidu.appolo
    groupId、artifactId、version三个元素生成了一个Maven项目的坐标,在互联网众多的Maven项目中可以唯一定位到某一个项目。坐标也决定将来项目在仓库中的路径及名称(groupId对应的包路径/模块名/版本号/jar包

    artifactId

    (公司内部唯一)

    项目名称,也是模块名称,对应groupId中项目的子项目
    version项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后代-SNAPSHOT
    version使用三位数字标识,例如1.1.0
    packaging(打包)项目打包的类型,可以是jar、war、rar、ear、pom,默认是jar
    dependencies和dependency(依赖)Maven的一个重要作用就是管理jar包,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些jar就被称,为依赖,使用标签dependency来配置。而这种依赖的配置正是通过坐标来定位的,由此我们也不难看出, maven把所有的jar包也都视为项目存在了。
    properties(配置属性)properties用来定义一些配置属性,例如project.build.sourceEncoding,可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级

    build(构建)

    配置插件

    build表示与构建相关的配置,例如设置编译插件的jdk版本。

    插件可以在自己的项目中设置,最常使用的是maven编译插件。设置项目使用的jdk版本时通过编译插件指定。pom.xml文件<build>中设置。

    (2)坐标:唯一值, 在互联网中唯一标识一个项目的

    <groupId>公司域名的倒写</groupId>

    <artifactId>自定义项目名称</artifactId>

    <version>自定版本号</version>

    (3)packaging 

    项目的打包类型:pom、jar(默认)、war(web应用)

    packing默认是jar类型,

    <packaging>pom</packaging>   --------->   父类型都为pom类型 (springcloud父项目)

    <packaging>jar</packaging>      --------->   内部调用或者是作服务使用

    <packaging>war</packaging>    --------->   需要部署的项目

    扩展:pom(没有java代码,也不执行java代码,只是为了聚合工程传递依赖)

    所有的父级项目的packaging都为pom,作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build

    <project>
      <packaging>pom</packaging>
       <modules>
          <module>abcd-business</module><!-- pom -->
          <module>abcd-sms</module><!-- pom -->
       </modules>
    </project>

    各个module里面依赖的项目中,子项目pom里面依赖的jar,和war最终都会被maven管理好。

    (4)依赖    相当于java代码中的import

        即在pom.xml文件中,添加 <dependencies>  标签(一般添加在properties标签下面),粘贴搜索到的插件的jar包的坐标。下面以mysql jar包,log(日志)jar包,junit单元测试jar包为例。添加成功后,会在本地仓库中,找到对应的文件夹

    <dependencies>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.22</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>

    </dependencies>

    扩展:IDEA中查看依赖关系小技巧,在IDEA中,进入pom.xml配置文件,右键—Diagrams  即可看到图表版依赖关系

    扩展:<dependencyManagement> 

          其通常用在项目中对顶层的父POM中,它能让其所有子项目引用一个依赖而不用显式的列出版本号。此外,dependencyManagement 只是声明依赖,并不实现引入(像极了接口),子项目如果不声明依赖,则不会从父项目中继承下来。

    提供作用:子模块继承之后,可以锁定版本+子module不用写groupId和version。 

    注意:子模块如果不写,就用父项目的版本,子模块写了,就用自己的版本

    <dependencyManagement>
        <dependencies>
          <!--spring boot 2.2.2-->
          <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>2.2.2.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
          </dependency>

    (5)properties 

    ① 设置Maven的常用属性

    进入pom.xml   找到properties标签

    <properties>

    <project.build. sourceEncoding>UTF-8</project. build. sourceEncoding> //<!--maven构建项目使用的是utf-8 ,避免中文的乱码-->

    <maven. compiler. source>1.8</maven. compiler.source> //<!--编译java代码使用的jdk版本-->

    <maven. compiler.target>1.8</maven. compiler.target> //<!--你的java项目应该运行在什么样的idk版本-->

    </properties>

    一般应用场景:一般在父项目中写好常用版本号属性,就可以对子项目进行统一管理(需要子项目通过parent标签引入该父项目)

    ② Maven的全局变量设置

    • 自定义属性

        Ⅰ  在<properties>通过自定义标签声明变量(标签名就是变量名)

        Ⅱ  在pom.xml文件中的其他位置,使用${标签名}使用变量的值

    说明:自定义全局变量一般是定义,依赖的版本号,当你的项目中要使用多个相同的版本号,先使用全局变量,定义,再使用${标签名}使用属性值。

    exp:spring框架中,很多依赖的jar包都是同一个版本号,如果修改的话,一个一个改很麻烦,改掉了还会导致项目不成功。因此可以在<properties>中自定义属性,然后在<dependency>中使用这个自定义属性

    <properties>   //在properties标签中自定义<spring.version>属性

    ....

        <spring.version>5.2.0</spring.version>

    </properties>

    <dependency>  //在依赖中,直接调用spring.version属性的值,这样改动properties中的属性值,就可以修改所有依赖里面的属性值

    ....

        <version>${spring.version}</verision>

    </dependency>

    特别说明:如果子项目的某个依赖中A的某个内部依赖B(A依赖B),父项目也用了B,子项目中的B版本和父项目的B版本不一致,可以在properties中专门写B的版本,这样父子项目B依赖都会统一。

    (6)build: maven在进行项目的构建时的配置信息,例如编译java代码使用的jdk版本

    扩展: 资源搜索方法

    手动搜索资源的地址:https://mvnrepository.com(ps:谷歌浏览器才能打开),使用groupId或者artifactId作为搜索条件

    4.5 Maven的生命周期,Maven的命令,Maven的插件

    (1)生命周期

       就是Maven构建项目的过程,即清理,编译,测试,报告,打包,安装,部署

    (2)Maven的命令

        Maven通过使用命令,完成项目的生命周期的执行(即通过命令完成清理,编译,测试,报告,打包,安装,部署)

    (3)Maven的插件

    Maven命令执行时,真正完成功能的是插件,插件就是一些jar文件,即一些类。

    (4)单元测试  junit,junit是一个专门测试的框架(工具),用于测试类中的方法

               junit测试内容:测试的是类中的方法,每一个方法都是独立测试的。 类中的方法 是测试的基本单位(单元)

               maven借助单元测试,批量的测试类中的大量方法是否符合预期的。

    • junit 使用步骤:

    Ⅰ  在pom.xml加入单元测试依赖。 仓库里面去搜,用使用人数最多的就是了

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>

    Ⅱ  在maven项目中的  src/test/java 目录下,创建测试程序。

    Ⅲ  推荐的创建类和方法的提示:

    ①  测试类的名称 是:Test + 测试的类名

    ②  测试的方法名称 是:test + 方法名称

    exp:

    @Test    //必须要用测试注解

    public class TestHelloMaven{

        public void testAdd(){

            方法体;

        }

    }

    说明:

    ①  其中testAdd叫做测试方法,它的定义规则  

    ②  方法是public的,必须的

    ③  方法没有返回值,必须的

    ④  方法名称是自定义的,推荐是test+方法名称

    ⑤  方法上方加入@Test注解

    exp:测试  某工程/src./main/java/com/Huhaha   下的 HelloMaven.java 中的 public void add()方法

    在 Maven工程的test目录创建测试类的测试文件,注意包名,路径一致    某工程/src/test/java/com/Huhaha 创建测试类

    将测试类按建议规则命名:TestHelloMaven.java

    package com.Huhaha;  //测试类的路径

    import org.junit.Assert;  //导入测试包

    import org.junit.Test;

    public  class TestHelloMaven{

        @Test

        public void testAdd(){

        HelloMaven hello = new HelloMaven(); //构造测试类HelloMaven的对象hello

        int res = hello.add(10,20);  //对象来调用将要测试的方法add()

    //assertEquals(期望值,实际值),测试的类方法,如果测试通过,即两个值相等证明正确的。不通过就抛异常

        Assert.assertEquals(30,res);

        }

    }

    4.6 Maven的命令

    (1)清理 mvn clean 。 

        清理之前编译时,生成的target目录。

    操作步骤:

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn clean

    (2)编译主程序文件  mvn compile

    编译main/java/目录下的java为class文件,同时把class拷贝到target/classes目录下面

    把main/resources目录下的所有文件,都拷贝到target/classes目录下

    操作步骤

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn compile

    (3)编译测试文件 mvn test-compile

        编译test./java/目录下的class文件,并将其拷贝到target\test-classes\包  下面

    操作步骤:

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn test-compile

    (4)测试 mvn test 测试(会生成一个目录surefire-reports,保存测试结果)

       执行测试文件

       执行mvn test的时候,会把前面的清理-编译主程序-编译测试程序 三个环节都执行一遍。测试完成可以直接在cmd中看到报告,同时在target/surefire-reports生成一个txt测试报告

    操作步骤:

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn test

    测试完成,会直接在cmde中看到报告。

    (5)打包主程序  mvn package

    编译、编译测试、测试、并且按照pom.xml配置(即以配置文件中的坐标为依据命名,建立类的相关性)把主程序=打包成jar包或war包,并存放在target目录下

    jar文件中只包含 src/main中的所有内容,不包含测试文件

    操作步骤:

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn package

    (6)安装 mvn install

        安装主程序(会把本工程打包,并且按照本工程坐标保存到本地仓库中)

        安装以后,公司的其他程序员都可以用这个jar包了(将打包好的jar包从target文件夹保存到本地仓库,并做好相关配置)

    存放路径:groupId对应的包路径/模块名/版本号/jar包)

    比如:repository/com/Huhaha(groupId)/ch01-maven(模块名)/1.0-SNAPSHOT(版本号)/ch01-maven-1.0-SNAPSHOT.jar

    操作步骤:

    打开cmd,转到项目根目录下(pom.xml)所在位置。  输入 mvn install

    特别注意:执行mvn命令某个步骤的时候,都会把这个命令之前的所有命令都执行一遍。比如执行mvn install,会把前面的1-5步骤都自动执行了

    4.7 配置插件

            Maven中,实际完成上面项目构建的都是Maven插件,插件可以在自己的项目中设置。最常使用的是maven编译插件。设置项目使用的jdk版本时通过编译插件指定。pom.xml文件<build>中设置。

    操作步骤:

    进入 pom.xml   一般在最后,开始写build标签

    <!--控制配置maven构建项目的参数设置,设置jdk的版本-->

    <build>

        <!--配置插件-->

        <plugins>      // 配置具体的多个插件

            <plugin>

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

                <artifactId>maven-compiler-plugink/artifactId>  //  <!--插件的名称-->

                <version>3.8.1</version>  //  <!--插件的版本-->

                <configuration>  //   <!--配置插件的信息->

                        <source>1.8</source>      //告诉maven我们的写的代码是在jdk1.8上编译

                        <target>1.8</target>   //告诉Maven此项目在jdk1.8的运行环境上运行

                    </configuration>

                </plugin>

            </plugins>

    </build>

    特别说明:plugin标签的内容都是直接从Maven的官网上复制来的,不用专门记忆。(直接百度 Maven 插件 进Maven官网即可找到)

    5、IDEA中使用Maven  (重点)

    5.1 IDEA中配置Maven

    IDEA中内置了Maven,但内置Maven配置不方便。都用自己下载的Maven。因此首先要在IDEA中设置我们自己的Maven

    设置步骤:

    进入 IDEA的两个目录设置,一个是 File-Settings(对当前工程有效) ,另一个是 File-Other Settings-Settings for NewProject(对以后的新建工程有效)。两个目录配置方法一模一样(这里以当前工程设置为例)

    Step1:设置Maven安装目录

    File-Settings-Build,Execution,Deployment-build tools-Maven

    Step2:进入Build Tools —Maven—Runner

    vm Options: -DarchetypeCatalog=internal  

    说明:Maven项目创建时,Maven会自动联网去外网下载模板文件,而且比较大,又是外网。效率就非常低。加入这个代码,可以让Maven不下载模板文件,创建项目就会非常快。(有的IDEA版本加了这个会报错,删掉就是了)

    JRE:选择jdk的版本

    5.3 IDEA中创建基于Maven的项目

    5.3.1 IDEA中创建JavaSE项目

    Step1:选择一个空工程并命名maven-course (便于以后添加不同技术的模块)

    New-Project-EmptyProject

    step2:使用模板创建项目

    Project Seetings 点击+(Add)-New Module   在Module中 选择左侧的Maven

    选择好自己的jdk版本,然后打钩使用模板,接着选择quickstart模板(比较靠后的模板)。这个模板用于创建普通的java项目

    最后

    项目创建完成

    说明: quick-start模板没有recourses文件夹,需要我们手动创建

    创建步骤:

    step1:点击main文件夹,右键 New-Directory   将文件夹取名Recourses(此时还只是普通文件夹)

    step2: 把recourses文件夹变成项目配置文件夹

    recourses文件夹 右键 Mark Directory as Resources Root

    IDEA中的Maven模块说明:

    5.3.2  IDEA中创建JavaWeb项目

    step1:仿照上面JavaSe的创建方法 New-Module-Maven (只是和javaSE用的模板不同而已)

    选择:maven-archetype-webapp模板

    step2:取项目名字,设置项目坐标(仿照前面的javase步骤)

    创建完成。

    step3:补充缺失目录。main下面补充java(设置为Sources Root),补充recourses(设置为Resources root)

    step4:(如果要做测试):补充test目录,test目录下再补充java(设置为Test Sources Root),补充recourses(设置为Test Resources root)

    step5 加入serlvet和jsp的依赖(听说serlvet和jsp已过时)

    step6 写serlvet代码,或jsp代码

    step7 配置Tomcat服务器

    (1)选择Edit Configuration

    (2)选择 Local 

    (3)取名字,并选择好端口号,然后进入部署页面(deployment)

    (4)deployment页面部署项目

    (5)给项目取名

    (6)启动Tomcat

    (7)通过本机浏览器,去访问页面

    5.4 IDEA中导入别人的maven项目

        选择IDEA主窗口右上角的工程结构,选择"+" ,Import Module,选择Module文件夹所在的目录(整个maven项目所在的根目录),点击“ok”,再次向IDEA确认是导入Maven项目,finish

    然后,在依赖界面(dependency),选择导入项目的JDK版本

    6、依赖管理

    (1) 依赖的范围

           依赖范围在<dependency>标签下用<scope>的值标签标识,表示依赖使用的范围,也就是在Maven构建项目的哪些阶段有效。

    <scope>标签的值有:compile、test、provided、默认采用compile(不写<scope>标签,就是默认<scope>compile</scope>标签)

    compile

    所有阶段都有效

    test

    只在测试阶段有效

    provided

    编译,测试有效。不参与打包

    对主程序是否有效
    对测试程序是否有效
    是否参与打包
    是否参与部署
    说明项目生成的jar包或者war包里面有个lib文件,专门放依赖的jar包项目生成jar包或者war包里,没有lib文件夹。依赖的其他jar包只在编译、测试的时候使用,但最终都不参与项目的打包

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>

        <scope>test</scope>   //说明junit只在测试时,这个依赖有效
    </dependency>

    <dependency>

    <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>

        <scope>provided</scope>   // 说明编译、测试时会使用,但生成项目的时候,不用这个jar包(Tomcat服务器都会再带serlvet类)
    </dependency>

    (2)排除传递的某些依赖  <exclusions>

           在mavenB项目中引入mavenA项目依赖,A项目中又有多个A相关的依赖,通过依赖传递,会将mavenA中的jar包传递进来,如果B中不需要A中的某个依赖(jar包)就可以使用以下标签

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

    exp:

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
      <exclusions>
        <exclusion>
          <artifactId>commons-logging</artifactId>
          <groupId>commons-logging</groupId>
        </exclusion>
      </exclusions>
    </dependency>

    简便方法:

    ① 进入图表版依赖关系

         在IDEA中,进入pom.xml配置文件,右键—Diagrams  即可看到图表版依赖关系

    ② 选中不想要的依赖,右键—exclude

        

    7、资源插件

    (1)背景

            没有使用resources的时候,Maven执行编译代码时,会把src/main/resources目录中的文件直接拷贝到target/classes目录中。对于在src/main/java目录下的非java文件,都不会处理,不会将其拷贝到target/classes目录中去。

            但实际开发中,比如使用mybatis框架的时候,我们需要把一些文件放在src/main/java中,而且在执行java程序时,需要用这些文件,即需要将其拷贝到target/classes目录中去。此时就需要在pom.xml中的<build>标签加入<resources>,告诉maven该怎么拷贝

    (2)配置方法

    <build>

        <resources>

            <resource>

                <directory>src/main/java</directory> <!--要拷贝文件所在的目录-->

                <includes>   <!--该目录下的后缀名为.properties,.xml文件都会被拷贝-->

                    <include>**/*.properties</include>  

                    <include>**/*.xml</include> 

                </includes>

                <filtering>false</filtering>  //  <false指不启用过滤器, *.property已经过滤后缀名了-->

             </resource>

        </resources>

    </build>

    展开全文
  • 主要介绍了Eclipse中导入Maven Web项目并配置其在Tomcat中运行图文详解,需要的朋友可以参考下
  • Maven项目导入: 选中:Project Structure 将Modules添加需要导入的项目模块: 给项目添加web 接下来添加Artifacts: 新建lib目录,并右键导入项目中的lib目录下所有: 点击设置tomcat: 添加一个tomcat: ...

    Maven项目导入:
    在这里插入图片描述选中:Project Structure
    在这里插入图片描述将Modules添加需要导入的项目模块:
    在这里插入图片描述给项目添加web
    在这里插入图片描述接下来添加Artifacts:
    在这里插入图片描述在这里插入图片描述
    新建lib目录,并右键导入项目中的lib目录下所有包:
    设置对应lib

    点击设置tomcat:
    在这里插入图片描述
    添加一个tomcat:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    添加lib内的jar到Add as Library…
    **加粗样式
    **
    最后修改数据库文件配置:
    在这里插入图片描述修改自己数据库的账户、密码、端口号、地址:

    在这里插入图片描述
    完成:
    在这里插入图片描述

    展开全文
  • 朋友们在写后端的过程中,遇到功能复杂的业务时需要导入不同的jar,安装不同的插件。在合作开发的过程中就会存在与别人版本不兼容的问题,使用maven来集成创建项目就会极大改善这一点 虽然现在还处于学生阶段,所...

    前言

    朋友们在写后端的过程中,遇到功能复杂的业务时需要导入不同的jar包,安装不同的插件。在合作开发的过程中就会存在与别人版本不兼容,导致项目得不到统一的问题,使用maven来集成创建项目就会极大改善这一点
    虽然现在还处于学生阶段,所涉及的项目复杂度还很低没有遇到过这样的开发场景,现在初步了解操作一下做点儿提前量,为以后做准备

    maven简介

    在这里插入图片描述
    Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库
    在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件
    Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方
    以下是Maven管理项目同步版本示意图
    在这里插入图片描述
    一句话概括:我们都在建房子,我们得去同一个地方买同样的材料才能最大程度保证一致

    maven的下载与安装

    1.下载网址:https://maven.apache.org/
    在这里插入图片描述
    2.下载完成后是压缩包的形式,解压到你指定的目录下,下面以我的为例
    解压后的目录如图所示
    在这里插入图片描述
    3.配置环境变量,在用户变量中新建名为MAVEN_HOME的变量,变量值为maven所在路径
    ①配置MAVEN_HOME
    在这里插入图片描述
    ②配置Path变量,在用户变量中新建项并添加%MAVEN_HOME%\bin
    在这里插入图片描述
    ③检查是否配置成功,win+R输入cmd,进入管理员界面,运行指令mvn空格-v,若返回如下结果则说明本地配置成功
    在这里插入图片描述

    优化配置参数

    在安装目录下的conf文件下,修改settings.xml参数提升性能
    在这里插入图片描述
    以Notepad++的方式打开

    1.修改本地仓库路径

    从中央仓库请求的资源会下载到本地仓库,而默认的本地厂库在C盘这是十分不妥当的,所以将原本的默认仓库从C盘到更改到自定义的新建仓库目录
    ①首先新建一个本地厂库,一般放在Maven的同级目录下
    在这里插入图片描述
    ②修改配置文件中的默认信息
    在这里插入图片描述

    2.设置阿里云私服镜像

    在以后对项目导入依赖项时,咱们的maven项目默认是需要去中央仓库获取资源,但是中央仓库在老美那里,我们的下载请求会十分缓慢影响效率,所以我们直接通过国内的maven镜像获取就可大大提升请求速度,如图所示进行操作,将私服地址粘贴进<mirrors>…</mirrors>之间即可:
    在这里插入图片描述
    阿里私服镜像:

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

    3.指定JDK版本

    我刚开始下载时默认的是1.4版本而我的是1.8,由于没注意到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>
    

    你是哪个版本就改成哪个版本

    IDEA创建第一个maven的web项目

    1.新建maven项目
    在这里插入图片描述
    2.选择maven模块,勾选archetype,选择web项目骨架(如下③所示),点击下一步
    在这里插入图片描述
    3.给项目命名
    在这里插入图片描述
    4.把配置路径改为设置后的路径,并完成项目建立
    在这里插入图片描述
    5.建立完成后,开始通过阿里云私服获取中央仓库资源到本地仓库,如图所示
    在这里插入图片描述
    6.导入依赖项
    以mysql连接jar包为例
    利用快捷键alt+insert,后点击第一个选项(依赖项)进入搜索界面,输入mysql,选择对应jar包进行添加
    在这里插入图片描述
    7.由于是第一次使用此依赖,还没有下载到项目库中,会出现如下报错(大家不要慌张这是正常现象)
    在这里插入图片描述
    8.解决办法:
    重新加载一遍Maven项目
    在这里插入图片描述
    9.成功导入数据库连接的jar包:
    在这里插入图片描述

    IDEA集成Tomcat

    1.首先添加配置,选择本地的Tomcat服务
    在这里插入图片描述
    2.在服务启动时部署
    在这里插入图片描述
    3.选择war包的形式,因为在读取时可以不用解压
    在这里插入图片描述
    4.运行Tomcat服务,IDEA会自动连接并部署项目到服务器上
    在这里插入图片描述

    Hello java!

    部署完成后创建一个HTML文件,运行我的第一个程序——Hello java!
    在这里插入图片描述
    Hello java!
    在这里插入图片描述

    展开全文
  • 找到依赖包存放位置 把local repository路径下内容全部删除,重新导入maven 问题2 pom.xml中 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> ...
  • 原因是因为刚导入的驱动还没有和项目一起发布到Tomcat。 问题解决 一般来说,只要重新发布一下项目就好了。但是今天我遇到的他没有将我导入的驱动和项目一起发布,所以我只能手动添加到要发布的Artifact(war...
  • idea怎样导入maven依赖包

    千次阅读 2020-05-03 18:50:15
    1.下载 ...2.配置conf里面的setting.xml文件 3.添加镜像中央仓库 <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.c...
  • maven导入外部jar

    2022-03-20 19:11:43
    maven只做三件事: 1.从网上下载jar 到本地,并让本地的...3.设置项目之间的依赖,避免一个jar改了,需要改变很多jar。弄一个父maven工程,其他的maven继承自这个工程,那其他maven也就可以引用父maven中的 ...
  • 原因&解决办法 1、路径错误问题 maven安装路径、setting....tomcat的配置一定要在plugins标签里面 4、骨架创建问题 如果是骨架创建maven并且有pluginManagement标签,将其删除即可 以上就是idea解决tomca.
  • 找了半天找到了一个解决方法,就是使用Maven中的 ,是用来配置插件地址的,因为maven的所有功能都是使用插件来实现功能的,因此需要从特定的地址下载插件。 在POM.XML中加入以下内容 <pluginRepositories> ...
  • Intelij导入maven项目并部署到tomcat emmmm我觉着最最有用的不是导入,,是部署tomcat 最后两步最最最重要,导入项目后一定要点击desploy在target目录下生成一个war,,不然会出死亡404 1.导入一个maven项目 (1)...
  • 1.最初在tomcat上部署web应用的方式,是通过mavenmaven-compiler-plugin插件先打成war,再将war复制到tomcat的webapps目录下。 2.后来用上了tomcat7-maven-plugin插件,可以直接在maven上编译,打包,部署一...
  • 需要前往IDEA修改配置,File -->Settings 勾上,然后点击Apply,OK; tomcat,启动成功,页面访问
  • Maven依赖导入

    2021-09-22 00:36:53
    Maven依赖导入 在 Settings… 中进行设置 打开File->Settings; 选择Build,Execution,Deployment,点击Build Tools->Maven->Runner,将Delegate IDE build/run actions to Maven选项进行勾选。 ...
  • maven导入jar步骤

    2022-03-22 13:29:36
    听说maven已近有一段时间了,但是直到今天才搞懂了他的自动下载相应的jar(这个也是在javaweb用到最多的功能,主要也是用来下载jar用的)。最初的时候不知道怎么在MyEclipse10中使用maven,也不知道maven是如何...
  • 1、Tomcat 9的tomcat-users.xml 位置:安装的Tomcat 9目录下的conf文件夹中的tomcat-users.xml 添加内容: <role rolename="tomcat"/> <role rolename="manager-gui"/> <role rolename="manager-...
  • 面试题--maventomcat

    2021-11-05 11:44:06
    面试题--maventomcatMaven1、什么是maven?2、maven能为我们解决什么问题?3、说说maven有什么优缺点?5、什么是Maven的坐标?6、讲一下maven的生命周期7、说说你熟悉哪些maven命令?8、如何解决依赖传递引起的...
  • apache-tomcat8.0.42-src使用ant编译后的工程,可以直接导入进eclipse进行调试学习。 内含build依赖的jar。 博客地址:http://blog.csdn.net/javandroid/article/details/62247046
  • 使用Maven导入MySQL驱动遇到的问题

    千次阅读 2020-04-08 19:18:40
    今天在使用Maven导入MySQL数据库驱动包依赖后,直接运行项目,出现错误。 java.sql.SQLException: No suitable driver found for jdbc:mysql 问题解析 原因是因为刚导入的驱动还没有和项目一起发布到Tomcat。 ...
  • Maven中如何使用tomcat8的插件

    千次阅读 2022-01-03 12:54:27
    但是,我的本地插件里没有tomcat,于是我找到这个插件,需要先下载这个插件! 具体方法: 在你的项目的module的pom池中加入 <pluginRepositories> <pluginRepository> <id>alfresco-...
  • 2、官网下载tomcat,bin目录下zipIndex of /tomcat/tomcat-9/v9.0.63/bin,解压到本地; idea新建web工程, idea右上角edit configuration,添加tomcat ->local 。Deployment添加时一定要有Artifact,否则启动...
  • Maven 导入JSTL问题与解决方案 首先交代配置环境:JDK1.8,Tomcat10.0.8,jakarta.servlet-api-5.0.0,jakarta.servlet.jsp-api-3.0.0 需求:引入JSTL核心标签库 解决方法 先说解决方法,从Maven:mvnrepository....
  • 如何在IDEA中用maven启动Tomcat

    千次阅读 2020-07-26 15:21:08
    如何在IDEA中用maven启动Tomcat 对于自学党来说,maven的配置很是复杂,并且网上没有很完整的配置文章,导致大家在配置时出现了很多错误,浪费了不少时间,所以我写了一篇文章来教学,如何在IDEA中用maven启动tomcat...
  • idea 如何不依赖maven导入本地依赖 jar

    千次阅读 2018-07-31 23:22:53
    建议第三种——来自踩过坑的人的意见 ...jar导入 步骤:1.如下图,先从libraries导入需要的jar   2.再从 module中添加之前所加的jar  3.如下,在Tomcat中配置  补充下关于Artifact相...
  • 本项目是多module的springcloud的项目,因为需要依赖第三方jar,而客户的部署环境异常无法成功依赖导第三方jar,所以需要自身项目带上jar。本项目的hwyg-sms模块(为jar)依赖一些短信的jar,现将第三方的短信...
  • maven导入fastjson依赖但是报fastjson找不到异常 纠结了好几天,今天灵光一闪会不会是没有重新打包项目的问题,试了一下果然是这样!!!!!!! <!-- json --> <dependency> <groupId>...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,464
精华内容 10,985
关键字:

maven导入tomcat依赖包