• Maven入门


    一. Maven简单介绍

    Apache Maven是个项目管理和自动构建工具,基于项目对象模型(POM)的概念。
    作用:完成项目的相关操作,如:编译,构建,单元测试,安装,网站生成和基于Maven部署项目。

    POM
    Project Object Model,项目对象模型。
    通过xml格式保存的pom.xml文件。作用类似ant的build.xml文件,功能更强大。
    该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。
    最后,根据你的项目需要更新您的pom.xml

    二. 什么是自动构建工具?

    .java->.class->run
    方式一
    javac HelloWorld.java
    java HelloWorld

      方式二
      开发工具Eclipse
    
    • 1
    • 2

    三. 常用的自动构建工具

    ant
    maven
    Gradle android项目管理和构建已使用

    四. Maven安装与配置

    (1)下载maven安装包,解压即可使用

      参考网址:http://maven.apache.org/download.cgi
    
    • 1

    在这里插入图片描述
    下载后将其解压即可
    (2) 配置maven环境变量

    2.1 MAVEN_HOME
    2.2 修改path添加maven相关路径
    配置方式跟jdk有些类似,环境变量MAVEN_HOME和M2_HOME的值为maven的根目录、
    然后在PATH环境变量里加入“%MAVEN_HOME%\bin;%M2_HOME%\bin;”即可

    点击我的电脑,右键找到属性
    然后找到相关设置中的高级系统设置,在点击环境变量
    在这里插入图片描述

    点开环境变量后在系统变量中新建一个变量(MAVEN_HOME),点击新建
    1.变量名自己命名,变量值放解压后的文件路径(注意:目录一定要是bin目录的上一级目录)
    在这里插入图片描述

    然后在PATH环境变量里加入“%MAVEN_HOME%\bin;%M2_HOME%\bin;”即可

    3 验证
    doc窗口执行命令“mvn –version”
    在这里插入图片描述
    4 修改“MAVEN_HOME\config”下的setting.xml文件,配置本地仓库。注意是:“E:/”而非“E:\”

    例如:E:/mvn-repository

    打开文件后会计按键Ctrl+f搜索local,将local代码复制一份出来

    在这里插入图片描述
    注1:localRepository标签在setting.xml文件的53行
    在这里插入图片描述
    注2:仓库的作用就是用来存放jar包的
    在bin目录的上一级j建一个仓库
    注3:仓库的分类
    中央仓库
    公司仓库(也叫私人仓库或私服)
    本地仓库

           中央仓库(http://search.maven.org/,但一般使用另外一个网站:http://www.mvnrepository.com/)第二个网站是国外的网站
                     
             公司里面还会有一个大仓库(本地)全公司使用
             本地仓库程序员自己使用,私服全公司使用,中央仓库所有人用
    
      注4:jar的查找顺序:本地仓库->私服->中央仓库
    
      注5:换源“阿里云”
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    《代码入下》

    
      alimaven
      aliyun maven
      http://maven.aliyun.com/nexus/content/groups/public/
      central        
    
      
     alimaven  
     central  
     aliyun maven  
     http://maven.aliyun.com/nexus/content/repositories/central/  
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    五. Maven的使用

    在使用前需要搭建好环境

    以eclipse为例,在菜单栏找到window在找到preferfences

    打开后搜索maven,然后找到installation文件以及User Settings
    在这里插入图片描述
    首先咱先看看installation,打开后点击add会弹出一框
    在这里插入图片描述
    然后在点击Directory,选择bin目录的上一层,点击选择文件夹之后选中增加后的这个文件即可
    在这里插入图片描述
    其次是User Settings文件

    这里主改图片中圈出来的部分

    在这里插入图片描述
    此处要放解压目录下conf文件里的logging下的settings。xml

    在这里插入图片描述
    Maven的使用2:创建web项目
    Maven project

    Ctrl+N键输入选择第三个建项目
    在这里插入图片描述
    点击下一步,在下一步
    maven-archetype-webapp
    在这里插入图片描述
    按照以上操作,点击下一步

    Group Id通常以公司命名

    Artifact Id就是项目名啦

    然后点击下一步

    在这里插入图片描述
    回车后项目就开始在创建中啦没在创建过程会有些慢

    图片中有串蓝色的代码,此串代码就是当时我们将xml文件中的源码换成了阿里云的源码,当发现此串代码中的不是aliyun而是其他的字段,估计就是使用到了中央仓库里去了,那可以考虑重新配置环境并且xinjian

    运行完之后会出现报错
    可以看到下面的jdk是1.5版本的,与main下面的目录是不正确的
    在这里插入图片描述
    之后我们可以点击项目右键,选择Build Path
    在这里插入图片描述
    选择Source,将下面的√去掉即可
    在这里插入图片描述
    之后我们可以看到目录的变化
    在这里插入图片描述
    注意:
    1:加入servlet api,不然报错
    2:修改Project Facets
    web2.3->web2.5 jdk1.5->jdk1.8
    3:添加的配置archetypeCatalog=internal可加快项目创建速度
    archetypeCatalog用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置:
    internal——maven-archetype-plugin内置的
    local——本地的,位置为~/.m2/archetype-catalog.xml
    remote——指向Maven中央仓库的Catalog

    六、案例

    这里呢在做一个登录的案例:
    util:

    package com.zking.util;
     
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;
     
    /**
     * 提供了一组获得或关闭数据库对象的方法
     * 
     */
    public class DBHelper {
     private static String driver;
     private static String url;
     private static String user;
     private static String password;
     
     static {// 静态块执行一次,加载 驱动一次
      try {
       InputStream is = DBHelper.class
         .getResourceAsStream("config.properties");
     
       Properties properties = new Properties();
       properties.load(is);
     
       driver = properties.getProperty("driver");
       url = properties.getProperty("url");
       user = properties.getProperty("user");
       password = properties.getProperty("pwd");
     
       Class.forName(driver);
      } catch (Exception e) {
       e.printStackTrace();
       throw new RuntimeException(e);
      }
     }
     
     /**
      * 获得数据连接对象
      * 
      * @return
      */
     public static Connection getConnection() {
      try {
       Connection conn = DriverManager.getConnection(url, user, password);
       return conn;
      } catch (SQLException e) {
       e.printStackTrace();
       throw new RuntimeException(e);
      }
     }
     
     public static void close(ResultSet rs) {
      if (null != rs) {
       try {
        rs.close();
       } catch (SQLException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
       }
      }
     }
     
     public static void close(Statement stmt) {
      if (null != stmt) {
       try {
        stmt.close();
       } catch (SQLException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
       }
      }
     }
     
     public static void close(Connection conn) {
      if (null != conn) {
       try {
        conn.close();
       } catch (SQLException e) {
        e.printStackTrace();
        throw new RuntimeException(e);
       }
      }
     }
     
     public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) {
      try {
       if(rs!=null) {
        rs.close();
       }
       if(ps!=null) {
        ps.close();
       }
       if(con!=null&&!con.isClosed()) {
        con.close();
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
     
     public static void close(Connection conn, Statement stmt, ResultSet rs) {
      close(rs);
      close(stmt);
      close(conn);
     }
     
     public static boolean isOracle() {
      return "oracle.jdbc.driver.OracleDriver".equals(driver);
     }
     
     public static boolean isSQLServer() {
      return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver);
     }
     
     public static boolean isMysql() {
      return "com.mysql.jdbc.Driver".equals(driver);
     }
     
     public static void main(String[] args) {
      Connection conn = DBHelper.getConnection();
      DBHelper.close(conn);
      System.out.println("isOracle:" + isOracle());
      System.out.println("isSQLServer:" + isSQLServer());
      System.out.println("isMysql:" + isMysql());
      System.out.println("数据库连接(关闭)成功");
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132

    entity实体类:

    package com.zking.entity;
     
    public class User {
        private Long id;
     
        private String name;
     
        private String loginName;
     
        private String pwd;
     
        private Long rid;
     
     public Long getId() {
      return id;
     }
     
     public void setId(Long id) {
      this.id = id;
     }
     
     public String getName() {
      return name;
     }
     
     public void setName(String name) {
      this.name = name;
     }
     
     public String getLoginName() {
      return loginName;
     }
     
     public void setLoginName(String loginName) {
      this.loginName = loginName;
     }
     
     public String getPwd() {
      return pwd;
     }
     
     public void setPwd(String pwd) {
      this.pwd = pwd;
     }
     
     public Long getRid() {
      return rid;
     }
     
     public void setRid(Long rid) {
      this.rid = rid;
     }
     
     public User() {
      super();
      // TODO Auto-generated constructor stub
     }
     
     @Override
     public String toString() {
      return "User [id=" + id + ", name=" + name + ", loginName=" + loginName + ", pwd=" + pwd + ", rid=" + rid + "]";
     }
        
        
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65

    dao层:

    package com.zking.dao;
     
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
     
    import com.zking.entity.User;
    import com.zking.util.DBAccess;
    import com.zking.util.DBHelper;
     
    public class UserDao {
    // 登录
     public User login(User u){
      Connection con=null;
      PreparedStatement ps=null;
      ResultSet rs=null;
      try {
       con=DBAccess.getConnection();
       String sql="select * from t_oa_user where loginName=? and pwd=?";
       ps = con.prepareStatement(sql);
       ps.setString(1, u.getLoginName());
       ps.setString(2, u.getPwd());
       rs=ps.executeQuery();
       if(rs.next()) {
        u.setId(rs.getLong(1));
        u.setName(rs.getString(2));
        u.setLoginName(rs.getString(3));
        u.setPwd(rs.getString(4));
        u.setRid(rs.getLong(5));
       }
      } catch (Exception e) {
       e.printStackTrace();
      }finally {
       DBHelper.close(con, ps, rs);
      }
      
      return u;
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    UserAction :

    package com.zking.web;
     
    import java.io.IOException;
    import java.io.PrintWriter;
     
    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 com.zking.dao.UserDao;
    import com.zking.entity.User;
     
    @WebServlet("/login.do")
    public class UserAction extends HttpServlet{
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      doPost(req, resp);
     }
     
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //设置编码方式
      req.setCharacterEncoding("utf-8");
      resp.setCharacterEncoding("utf-8");
      resp.setContentType("text/html; charset=UTF-8");
        
      //拿out
      PrintWriter out = resp.getWriter();
        
      UserDao ud=new UserDao();
      //接收表单传值
      String sname = req.getParameter("name");
      String pwd = req.getParameter("pwd");
      User u=new User();
      u.setLoginName(sname);
      u.setPwd(pwd);
      User u1 = ud.login(u);
      if(u1!=null) {
       out.print("");
      }else{
       out.print("");
      }
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    效果图:
    在这里插入图片描述

  • 相关阅读:
    2023-11-08 monetdb-事务-只有RR隔离级别-原因分析
    前端模块化开发
    【无标题】软件测试自动化“领导者”SmartBear举办首场中国线上研讨会:洞悉全球自动化测试走向,探讨降本增效之策
    express学习7-express参数中post参数的获取
    C++标准库(第二版,作者_NicolaiMJosuttis)_第5章通用工具5.2.1shared_ptr
    Netty实战(五)
    appium
    chloris.earth ——Chloris 全球生物量 2003 - 2019 数据平台
    桥接设计模式
    使用adb shell 命令接收串口发送过来的16进制数据 或者 发送16进制数据
  • 原文地址:https://blog.csdn.net/zsm030616/article/details/126156793