• maven(1)


    目录

    一、maven简介

    二、maven的安装及环境配置

    三、maven的仓库介绍及配置

    四、eclipse与maven的配置

    五、maven项目测试

    六、练习


    一、maven简介

      1. Maven简单介绍


     Apache Maven是个项目管理和自动构建工具,基于项目对象模型(POM)的概念。


     2. 作用:

    完成项目的相关操作,如:编译,构建,单元测试,安装,网站生成和基于Maven部署项目。

            maven能够帮助我们解决jar包依赖的问题,在做项目时,首先搭建环境要导入jar包,那我们的jar包一般是在百度上进行下载


            maven在工程中的某一个xml文件中写入一个字符串,达到jar下载的作用,并且下载出跟jar包相匹配的版本(因为jar包之间可能会存在依赖关系的问题)

    二、maven的安装及环境配置

    下载maven安装包,解压即可使用
          http://maven.apache.org/download.cgi

    将该网址放百度上搜,

     

    于是拿到以下的jar包:

     之后对其进行解压:

    安装步骤跟jdk的安装相差无几:

            1)双击安装

            2)配置环境变量

           



    1、配置maven环境变量:
               MAVEN_HOME

    步骤如下:

    找到你桌面上的此电脑:

                                                            

     

    在填变量值时要点击 浏览目录,去找到你放置maven包 的 位置路径:

    确定之后,就能看到了:


        2、 修改path添加maven相关路径:


              配置方式跟jdk有些类似,环境变量MAVEN_HOME和M2_HOME的值为maven的根目录;然后在PATH环境变量里加入“%MAVEN_HOME%\bin;%M2_HOME%\bin;”即可:


             

      3 、验证:
          doc窗口执行命令“mvn –version”

    三、maven的仓库介绍及配置

    maven的jar包下载流程:


       

      修改“MAVEN_HOME\config”下的setting.xml文件,配置本地仓库。注意是:“E:/”而非“E:\”

    在E盘新建一个文件夹: mvn_repository

    进入复制其所在位置路径:

    把路径复制到:

     

    ( 这里要注意修改斜杠)


          注1:标签在setting.xml文件的53行
          注2:仓库的作用就是用来存放jar包的
          注3:仓库的分类

          注4:jar的查找顺序:本地仓库->私服->中央仓库

          注5:换源“阿里云”


               中央仓库
               公司仓库(也叫私人仓库或私服)
               本地仓库

          中央仓库(http://search.maven.org/),

          但一般使用另外一个网站: 

                 https://mvnrepository.com/

    (但此网站是国外网站,下载会很慢)

    比如搜索"mysql":

     

    公司仓库
               本地仓库           
                 公司里面还会有一个大仓库(本地)全公司使用
                 本地仓库程序员自己使用,私服全公司使用,中央仓库所有人用

    四、eclipse与maven的配置

    打开eclipse,找到菜单栏Window里的preference,搜索maven:

     这里找到你maven包的路径位置:

    勾选刚添加成功的:

    再:

    注意已自动为您切换Reindex位置:

     这样操作下来eclipse与maven的配置就完成了!

    五、maven项目测试

    Ctrl+n:

    而此时在E盘新建的文件夹 mvn_repository 内已经多了个文件:

    进入eclipse :

     但是项目是报错的:

    那么一步步解决这个错:

     Maven的使用:创建web项目
       Maven project
       maven-archetype-webapp

       注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

    步骤: 

    选中项目右键:

     

     进pom.xml:

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

    这里提供pom.xml源代码:

    1. "http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    3. <modelVersion>4.0.0modelVersion>
    4. <groupId>com.zkinggroupId>
    5. <artifactId>test_mavenartifactId>
    6. <packaging>warpackaging>
    7. <version>0.0.1-SNAPSHOTversion>
    8. <name>test_maven Maven Webappname>
    9. <url>http://maven.apache.orgurl>
    10. <dependencies>
    11. <dependency>
    12. <groupId>junitgroupId>
    13. <artifactId>junitartifactId>
    14. <version>4.12version>
    15. <scope>testscope>
    16. dependency>
    17. <dependency>
    18. <groupId>mysqlgroupId>
    19. <artifactId>mysql-connector-javaartifactId>
    20. <version>5.1.44version>
    21. dependency>
    22. <dependency>
    23. <groupId>javax.servletgroupId>
    24. <artifactId>javax.servlet-apiartifactId>
    25. <version>4.0.1version>
    26. <scope>providedscope>
    27. dependency>
    28. dependencies>
    29. <build>
    30. <finalName>test_mavenfinalName>
    31. <plugins>
    32. <plugin>
    33. <groupId>org.apache.maven.pluginsgroupId>
    34. <artifactId>maven-compiler-pluginartifactId>
    35. <version>3.7.0version>
    36. <configuration>
    37. <source>1.8source>
    38. <target>1.8target>
    39. <encoding>UTF-8encoding>
    40. configuration>
    41. plugin>
    42. plugins>
    43. build>

     再找到菜单栏Window里的preference:

     

    好,到这里项目就不再报错,问题得到解决啦!!!

    接着测试:

    DemoServlet:

     源代码:

    1. package com.ycx.demo;
    2. import java.io.IOException;
    3. import javax.servlet.ServletException;
    4. import javax.servlet.ServletRequest;
    5. import javax.servlet.ServletResponse;
    6. import javax.servlet.annotation.WebServlet;
    7. import javax.servlet.http.HttpServlet;
    8. @WebServlet("/demo")
    9. public class DemoServlet extends HttpServlet{
    10. @Override
    11. public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
    12. System.out.println("come in 。。。。。。");
    13. }
    14. }

     运行结果:

    六、练习

    util:

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

    1. #oracle9i
    2. #driver=oracle.jdbc.driver.OracleDriver
    3. #url=jdbc:oracle:thin:@localhost:1521:ora9
    4. #user=test
    5. #pwd=test
    6. #sql2005
    7. #driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
    8. #url=jdbc:sqlserver://localhost:1423;DatabaseName=test
    9. #user=sa
    10. #pwd=sa
    11. #sql2000
    12. #driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    13. #url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB
    14. #user=sa
    15. #pwd=888888
    16. #mysql5
    17. #driver=com.mysql.jdbc.Driver
    18. #url=jdbc:mysql://127.0.0.1:3306/mybatis_ssm?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
    19. #user=mybatis_ssm
    20. #pwd=xiaoli
    21. #mysql8
    22. driver=com.mysql.cj.jdbc.Driver
    23. url=jdbc:mysql://127.0.0.1:3306/yjy?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT&useSSL=true
    24. user=root
    25. pwd=123456

    entity实体类:

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

    dao层:

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

    UserAction :

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

    运行效果:

    今日有关maven的分享就到这啦!再会~

  • 相关阅读:
    产品经理必备技能:如何快速锁定种子用户群体?
    机房动环监控系统有哪些告警功能,机房动环监控系统是什么?
    Mac下flutter工程配置Gitlab cicd打包(暂时仅限android侧)
    深度学习算法在工业视觉落地的思考
    升讯威在线客服系统的并发高性能数据处理技术:为多线程处理同步数据
    【干活推送 】人工智能(AI)教程
    华为数字化转型之道 认知篇 第二章 数字化转型框架
    练习前端案例
    Vue实现流程图,借鉴vue-tree-color 实现流程框架技术
    基于Linux的Spark安装与环境配置
  • 原文地址:https://blog.csdn.net/weixin_65808248/article/details/126146126