Web Maven

1 简介

Apache Maven 是一种用于软件项目管理工具,基于 Project Object Model(POM),用来管理项目的构建,汇报及文档生成等功能。
Maven:用来管理项目的工具。
主要职责是:

  1. 用来下载项目的外部引用。
    原始的外部引用方式存在两个痛点:
    (1)手动重复下载大量的jar包这个过程很繁琐。
    (2)不同的项目使用不同版本号的jar包,不同jar包之间的对应关系又是不一致的。
    为了解决这两个痛点,Maven应运而生,类似于一个中央仓库、应用中心的存在,一次性会下载好第一个jar包下面所包含的所有其他jar包,不需要像原始方式一样手动重复下载大量的jar包。
  2. 用来将本项目打包。
    要注意Tomcat不能直接运行程序员的.java代码,只能运行.jar或.war文件,.jar或.war文件中是多个.class字节码文件的集合。
    所以我们通过maven将程序员的.java代码打包成了.jar或.war文件,然后就给tomcat进行运行。
  3. 用来将打包的项目发布到服务器(例如tomcat)运行。

它构建了一个Java的生态。

2 Maven的安装

Maven不需要安装,因为IDEA已经自带了Maven,直接使用就好。

3 Maven下载依赖jar时常见问题

Maven下载依赖jar的时候会出现各种各样奇葩的问题,原因是因为中央仓库不在国内。这时我们不得不了解一下Maven添加引用的流程:
在这里插入图片描述
如上图所示,比如现在有一个项目,需要jdbc这个jar包。我们首先需要在项目里添加一个jdbc依赖包,这个时候它会去中央仓库下载jdbc这个jar包,但它不是直接将这个jar包下载的你的项目,而是先下载到本地仓库中(为什么这样做呢?是为了加速和减少中央仓库的使用频率),然后再把本地仓库的这个jar包添加到项目中去。

介于这个过程有点长,所以它出现的问题也比较多,主要分为两种现象:

  1. 包全部丢失现象。
    中央仓库往本地仓库拉jar包的时候,因为中央仓库是国外的,物流比较长,所以会存在包丢失的情况,包就拉不下来了,然后就出问题了。
    【解决方案】:这种情况比较好处理,maven工具里面有一个重新导入,我只需要点击重新导入,就可以把包重新拉下来了,总有一次会拉成功的。
  2. 包部分丢失现象。
    因为网络等问题,在下载一个包的时候只下载了一半,一部分的内容丢了,就出问题了。
    【解决方案】:这种情况非常常见,需要把本地仓库的所有文件全部删除,然后重新下载。

或者直接把国外的这个中央仓库换成国内的中央仓库(阿里云或网易云)进行下载,这两种问题的出现也会减少很多。
总结:
Maven出现问题的解决方案:

  1. 把maven下载源改成国内。
  2. 删除本地的maven仓库,重复下载不低于5次。
  3. 关闭电脑杀毒软件和防火墙。关闭防火墙步骤如下图所示:
    在这里插入图片描述

4 Maven项目创建步骤

Maven项目创建步骤:

  1. 创建一个新项目。
    在这里插入图片描述
  2. 选择 maven 类型的项目,并勾中使用模板(也就是Create from archetype这块),并向下拉找到maven-archetype-quickstart,点击next。
    在这里插入图片描述
  3. 设置项目名称(不要起中文的)、存放路径(不要存在c盘)和项目属性设置 ,点击next。
    在这里插入图片描述
  4. User settings file:用来更换中央仓库地址的;Local repository:本地仓库的存储地址,并把这两个后面的Override都给勾上,点击finish即可完成创建。
    在这里插入图片描述
  5. 等待出现如下图所示的情况是maven项目是加载(下载)成功的。
    在这里插入图片描述
  6. 出现如下图所示的一个目录,才能说明你的maven项目是创建完成的(如果没有这个目录的,说明你下载失败了,重新创建一个maven项目即可解决此问题)。
    里面的main/java路径下存放的是java所有源代码,所有java源代码都会放到这个路径;test/java下面是写单元测试的;pom.xml是maven项目的配置文件。
    在这里插入图片描述
  7. 然后运行里面自带的helloworld代码,如果运行成功,才能说明这个maven项目是创建成功的。
    在这里插入图片描述

5 Maven国内中央仓库的更换

Maven国内中央仓库的更换:

  1. 使用Idea将User settings file目录下的settings.xml文件打开。
    在这里插入图片描述
  2. 找到< mirrors >这个节点,把阿里云的< mirror >节点直接加入进去。
    在这里插入图片描述
  3. 点击保存settings.xml文件即可完成更换。

6 maven项目的配置文件pom.xml介绍

pom.xml

<?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">
<!-- 上面的内容完全不用管,使用自动生成的就行,是用于一些校验规则指定的 -->

  <!-- 这里指定的是 POM 的版本,也不需要动 -->
  <modelVersion>4.0.0</modelVersion>

  <!-- 这里是项目的描述信息,是新建项目时我们填入的内容 -->
  <groupId>com.peixinchen</groupId>  <!-- 组织ID -->
  <artifactId>Fo</artifactId>    <!-- 项目ID -->
  <version>1.0-SNAPSHOT</version>   <!-- 版本号 -->
  <name>fo</name> <!-- 项目名称 -->
  <url>http://www.example.com</url>  <!-- 本项目网站地址,用来对这个项目做说明的,如果没有则可以留空 -->

  <!-- 可以配置一些参数 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 项目编码设置成UTF-8,因为它支持中文 -->
    <!-- 默认情况下,maven 会使用 1.5 版本进行代码检查,一般我们都修改为 1.8 -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>    <!--所有外部引用jar都在这个里面 -->
     <!-- 这里指定了我们需要的依赖 -->
     <dependency>
       <groupId>junit</groupId>     <!-- 组织id -->
       <artifactId>junit</artifactId>   <!-- 项目id -->
       <version>4.11</version>   <!--版本号 -->
       <scope>test</scope>  <!--作用域,这个test表示当前jar只有在测试阶段才用,如果什么也不写表示项目整个生命周期都要引用此jar包 -->
     </dependency>
  </dependencies>

  <!-- 一般我们把构建相关的配置放这里 -->
  <build>
    <!-- 使用各种插件 -->
    <plugins>
      <!-- 这个插件的目的是帮我们把依赖复制到 target\lib 文件夹下,用于一会打 jar 包使用 -->
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-dependency-plugin</artifactId>
         <version>3.1.1</version>
       <executions>
        <execution>
         <id>copy-dependencies</id>
         <phase>package</phase>
         <goals>
            <goal>copy-dependencies</goal>
         </goals>
         <configuration>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
            <includeScope>runtime</includeScope>
         </configuration>
       </execution>
      </executions>
     </plugin>
 
     <!-- 这个插件是用于打 jar 包的 -->
     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      <configuration>
        <archive>
        <manifest>
          <!-- 这里指定 Main-Class -->
          <mainClass>Main</mainClass>
          <addClasspath>true</addClasspath>
          <classpathPrefix>lib/</classpathPrefix>
          </manifest>
        </archive>
       </configuration>
     </plugin>
    </plugins>
  </build>
  
</project>

7 Maven项目操作示例

在此我们以实现数据库查询为例进行介绍。

  1. 创建maven项目。
  2. 添加外部引用(也就是添加外部jar包)
    打开maven中央仓库,百度直接搜maven选择https://mvnrepository.com链接进入即可。
    进入页面后通过下面步骤添加引用:
    在这里插入图片描述
    如果出现External Libraries下面出现了Maven:mySQL:…这个包则说明成功下载,引入mysql的jar包是正常的。
  3. 我们直接在App.java里写代码,写完之后直接运行即可。
public class App{
    public static void main(String[] args) {
        //1.获得DataSource
        MysqlDataSource dataSource = new MysqlDataSource();
        //url,username,password
        dataSource.setURL("jdbc:mysql://localhost:3306/test?characterEncoding=utf8");
        dataSource.setUser("root");
        dataSource.setPassword("root"); //写自己mysql的密码
        //2.获得connection
        Connection connection = dataSource.getConnection();
        //3.拼接SQL
        String sql = "select * from student where id=?";
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,2);
        //4.得到ResetSet
        ResultSet resultSet = statement.executeQuery();
        while(resultSet.next()){
              System.out.println("查询的数据name:"+resultSet.getString("name"));
        //5.释放链接
        resultSet.close();
        statement.close();
        connection.close();
        }
    }
}
  • 19
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值