zoukankan      html  css  js  c++  java
  • 01-Maven

    课程目标

    1.Maven概述

    2.Maven入门使用

    3.仓库

    4.关联Idea

    5.Maven指令

    6.私服

    Maevn概述

     引言

    项目中jar包资源越来越多,jar包的管理越来越繁琐。

    1. 要为每个项目手动导入所需的jar,需要搜集全部jar--繁琐。
    2. 项目中的jar如果需要版本升级,就需要重新搜集jar--复杂。
    3. 相同的jar在不同的项目中保存了多分--存储冗余,散乱。

    java项目需要一个统一的便捷的管理方法。

    介绍

    Maven这个单词来自于易第绪语(犹太语),意为知识的积累。

    Maven是一个基于项目对象模型(POM)的概念的纯java开发的开源的项目管理工具。主要用来管理java项目。进行依赖管理(jar包依赖管理)和项目构建(项目编译、打包、测试、部署)。此外还能分块开发,提高开发效率。

    安装

    下载maven

    地址:https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/

     Maven安装

    解压

    注意:Maven解压即课用,因此解压目录为安装目录。戒烟文件尽量不要放在含有中文或者特殊字符的目录下。

    解压后内部含有4个文件夹,3个文件。其中文件夹说明如下:

    1. bin:含有mvn运行的脚本;
    2. boot:含有plexus-classworlds类加载器框架,Maven使用该框架自己的类库;
    3. conf:含有settings.xml配置文件;
    4. lib:含有Maven运行时锁需要的java类库。

     环境变量

    maven依赖java环境,所以要确保java环境已配置好(maven-3.3+需要jdk7+)

    maven本身有2个华宁变量需要配置:

    1. MAVEN_HOME=maven的安装目录;
    2. PATH=maven的安装目录下的bin目录。

     

    测试

    打开命令行窗口:

    #查看maven版本信息
    mvn -v

     

    配置

    本地仓库

    maven的conf目录中有settings.xml,时maven的配置文件,做如下配置:

    <localRepository>D:developer_toolsJavamaven_repository_for3.5.4</localRepository>

    我d

    说明:配置文件中的地址为存放maven管理的jar包的位置,是自己新建的一个文件夹。

     JDK配置

     在<profiles>标签中增加一个<profile>标签,限定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>
    <!--让增加的profile生效-->
    <activeProfiles>
        <activeProfile>jdk-1.8</activeProfile>
    </activeProfiles

     

    仓库

    存储依赖的地方。

    仓库不仅存放依赖,而且每个依赖都有唯一标识(坐标),供java项目索取。

    仓库分类

     本地仓库:其实就是上面建的文件夹,会把下载的jar包存储到里面。

    远程仓库-中央仓库:安装了maven,就会自动映射这个仓库,不需要任何配置,但由于服务器在国外,访问慢。

    远程仓库-公共仓库:由于远程仓库访问慢,因此有些企业等建立了公共仓库供大家使用,如阿里云仓库,后面我们会配置。

    远程仓库-私服:是公司内部搭建的远程仓库,访问是远程仓库中最快的,也可以放一些公司自己搭建的jar包。后面我们会试着安装私服。

    当需要依赖时,会从仓库中去查找,优先顺序为:

    本地仓库->私服(如果配置)->公共仓库(如果配置)->中央仓库

    本地仓库

    即在setting.xml中配置的目录,是上面我们新建的,并配置在配置文件中。当然现在是什么也没有的。

    使用过的依赖都会自动存储在本地仓库中,后续可以复用。因此本地仓库会越来越壮大。

    远程仓库

    中央仓库

    Maven中央仓库是由Maven社区提供的仓库,不用任何配置,maven中内置了中央仓库地址。

    其中包含了绝大多数流行的开源Java构件。

    公共仓库(重点)

    除中央仓库之外,还有其它远程仓库。

    比如aliyun仓库(http://maven.aliyun.com/nexus/content/groups/public)

    中央仓库在国外,下载依赖速度过慢,所以都会配置一个国内的公共仓库替代中央仓库。

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

     私服(了解)

     公司范围内共享的仓库,不对外开放。

    可以通过nexus来创建、管理一个私服。

    后续章节会讲解,不过我可能会直接略过。

    关联Idea

    在idea中关联mavem

    在idea中关联本地安装的maven,后续就可以通过idea使用maven,管理项目啦。

    创建Maven项目

    上面已经在idea中关联了maven,现在就可以在idea中基于maven构建项目了。

    新建项目

    新建项目,要选择maven选项

    指定项目名

    项目位置

     点击自动导包。

    项目结构

    maven项目的目录结构是统一的,我们要熟悉。

    1. src/main/java存放源代码,建包,放项目中代码(service,dao,User,...)
    2. src/main/resources书写配置文件,项目中的配置文件(jdbc.properties)
    3. src/test/java书写测试代码,项目中测试案例代码
    4. src/test/resources书写测试案例相关文件,这个idea创建好后没有,需要我们自动创建,当然不用的话就不创建。
    5. 项目根/pom.xml(project object model)maven项目核心文件,其中定义项目构建方式,声明依赖等

    注意:项目中的建包,建类,执行,都和普通项目无差异。

    项目类型

    根据项目类型,在pom.xml中做出对应配置,添加配置:<packaging>jar</packaging>

    导入依赖jar

    建好项目后,需要导入需要的ajr,要通过【坐标】

    1. 每个构件都有自己的坐标(标识)=group+artifactId+version=项目标识+项目名+版本号
    2. 在maven项目中需要配置坐标,maven便会自动加载对应依赖。删除坐标会移除依赖。

    查找依赖

    依赖查找服务:https://mvnrepository.com/,获得依赖的坐标,在maven项目中导入。也可以直接百度maven,这个链接。

    导入依赖

    然后搜索,复制,并放入pom文件即可。

    创建web项目

    打包方式

    pom.xml中设置<packaging>war</packaging>

    对于jar是默认方式,不写就是jar。

    web依赖

     导入JSP和Servlet和JSTL依赖,使项目具有web编译环境。

    <?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.qf</groupId>
        <artifactId>test_shine</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--设置项目类别 java项目是jar javaWeb项目是war-->
        <packaging>war</packaging>
    
        <!--定义项目中需要的所有依赖-->
        <dependencies>
            <!--jstl支持-->
            <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
            </dependency>
            <!--servlet编译环境-->
            <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
            <!--jsp编译环境-->
            <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
            <dependency>
                <groupId>javax.servlet.jsp</groupId>
                <artifactId>jsp-api</artifactId>
                <version>2.0</version>
                <scope>provided</scope>
            </dependency>
    
        </dependencies>
    </project>

    webapp目录

     按照maven规范,新建web项目特有目录

    <?xml version="1.0" encoding="UTF-8"?>
    <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_4_0.xsd"
             version="4.0" >
    
        <!--这是一个空白的web.xml文件模板-->
    </web-app>

    定义Servlet和Jsp

     下面就是正常定义我们锁需要的Servlet和JS

    servlet代码:

    package com.qf.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    /**
     * @author YCKJ-GaoJT
     * @create 2020-11-02 17:06
     **/
    @WebServlet("/shine")
    public class ShineServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("shine servlet");
            //转发跳转 index.jsp
            req.getRequestDispatcher("/index.jsp").forward(req,resp);
        }
    }

    index.jsp代码

    <%--
      Created by IntelliJ IDEA.
      User: YCKJ3911
      Date: 2020/11/2
      Time: 17:07
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <span style="color: red;">Hello world</span>
    </body>
    </html>

    部署web项目

     新增Tomcat

    这里略(P5的6分钟之后),因为我Tomcat没有安装,这里后续补充,先学习P6及之后

    部署web项目

    启动Tomcat

    依赖生命周期

    项目中导入的依赖可以做生命周期的管理,生命周期是指这个依赖在哪些过程中是有效的。

    这里还有一些讲解,是和上面省略的有一点关系,不长,后续补充下,P6

    maven有生命周期如下:

    标识 周期
    compile 缺省值(默认值),适用于所有阶段(测试运行,编译,运行,打包)
    provided 类似complile,期望JDK、容器或使用者提供这个依赖,如servlet-api.jar;适用于(测试运行,编译)阶段
    runtime 只在运行时使用,如mysql的驱动jar,适用于(运行、测试运行)阶段
    test 只在测试时使用,适用于(编译,测试运行)阶段,如junit.jar
    system Maven不会在仓库中查找对应依赖,在本地磁盘目录中查找;适用于(编译,测试运行,运行)阶段

    Maven指令

    命令行

    由于有一点涉及上面,因此笔记暂时不做。后续补充。

    maven面板

    暂略

    私服

    赞略

  • 相关阅读:
    Android Studio 使用起来很卡,是如何解决的?
    前端嵌入视频直播和聊天支持.m3u8格式
    koa & cors原理
    Sequelize基本操作
    vue内置组件有哪些?
    使用element-ui的时候控制台报TypeError: Cannot read property 'disabled' of null错
    js监听页面元素是否变化
    软件版本: Alpha、Beta、RC、Release版
    前端脚手架BigFish
    mini-css-extract-plugin搭配optimize-css-assets-webpack-plugin
  • 原文地址:https://www.cnblogs.com/G-JT/p/13914002.html
Copyright © 2011-2022 走看看