• Maven学习总结


    简介

    Maven有两大功能: 一个是jar管理(也可称依赖管理), 另一个是一键部署(需要配合插件来使用).

    Maven的使用主要是围绕配置文件:pom.xml. 该文件主要的有两部分, 一个是依赖管理, 包含在<dependencies>标签中; 另一个是插件管理, 包含在<plugins>标签中. 一个简单web项目pom.xml文件中这两部分的配置如下:

    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
        </dependency>
    
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
          <scope>provided</scope>
        </dependency>
    
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
        </dependency>
    </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <target>1.8</target>
              <source>1.8</source>
              <encoding>UTF-8</encoding>
            </configuration>
          </plugin>
          
          <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
              <port>8888</port>
            </configuration>
          </plugin>
        </plugins>
    </build>
    

    在该文件中配置了3个jar包分别是用于测试的的junit, 用于编写servletserverlet-api, 以及编写jspjsp-api; 同时该文件还配置了两个插件, 一个是maven的jdk插件maven-compiler-plugin, 配置的jdk版本是1.8, 另一个是maven的tomcat插件tomcat7-maven-plugin.

    解决jar包冲突

    在上面的pom.xml中, 对两个jar包都增加了<scope>provided</scope>:

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

    这是为了让这2个jar只在编译与测试时使用, 而在运行时不使用. 如果运行时依然提供这两个jar包, 就会存在相同的jar包发生jar冲突. 这是因为在运行时插件tomcat7-maven-plugin也提供了这两个jar. 下面是该插件的具体配置信息:

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <target>1.8</target>
              <source>1.8</source>
              <encoding>UTF-8</encoding>
            </configuration>
    </plugin>

    注意: 如果在idea中新建的module会自动依赖project的jar包, 如果存在module与project中依赖了相同的jar, 也会发生jar包冲突.

    jar包管理中的依赖范围

    在上文中为解决jar包冲突, 为这两个jar包设置了<scope>provieded</scope>, 其中的provieded就是指jar包管理中的依赖范围. 一共有5种依赖范围, 他们分别是complie, test, provieded, runtime, system. 默认是complie.

    增加<repositories>标签

    maven存放jar包的仓库有本地仓库与远程仓库, 当本地仓库没有对应的jar包时, maven会从远程仓库下载jar包, 这些仓库的配置信息存放在maven安装目录下的etc/conf.xml文件中. 但有时候我们会为项目单独设置远程仓库, 这时就需要在pom.xml添加一个<repositories>标签, 其基本格式如下

    <repositories>
    
       <repository>
    
         <id>远程仓库唯一标识符</id>
    
         <url>远程仓库的url</url>
    
      </repository>
    
    </repositories>
    

    Maven 进阶: 继承与聚合

    Maven还能够管理项目的层级关系, 父项目需要在pom.xml中设置打包方式为pom.

    补充

    Maven相比idea的优势

    idea本身也有依赖管理, 也能够对web工程进行一键部署, 那为什么还需要使用Maven.

    • 更灵活的jar包管理, 比如配合使用Maven的继承机制.
    • 方便团队协作, 通过pom.xml文件就能实现项目环境的搭建, 无论在idea还是eclipse中都能使用.

    idea中配置Maven的3要素

    • Maven setting.xml文件位置, idea中file->setting搜索"maven":
      在这里插入图片描述
    • 本地仓库路径配置,在setting.xml中配置如下:
      在这里插入图片描述
    • 远程仓库:阿里云远程(默认为maven官方远程仓库, 下载速度慢), 在setting中配置如下:
      在这里插入图片描述

    idea中加载Maven项目

    在Maven项目中选择添加, 之后选择一个Maven项目文件夹中的pom.xml文件就可以.

    在这里插入图片描述

  • 相关阅读:
    09暑假总结
    给我同学的一点建议
    委托(一个主窗体统计多个从窗体的按钮单击的次数)
    关于C#写的记事本中一个问题
    IT行业最重要的四件宝我的实习体会
    使用结构、数组、循环和DataGridView写的分数统计小程序
    Visual Studio 2005 打不开,一直停在启动画面问题
    解决Cannot open the disk 'F:/vmware/Ubuntu.vmdk' or one of the snapshot disks it depends on.
    设计原则笔记
    交叉表组件
  • 原文地址:https://www.cnblogs.com/bitbitbyte/p/12536571.html
Copyright © 2020-2023  润新知