1.Maven在idea中的使用

一、Maven

1、介绍

Maven是一个项目管理工具,主要作用就是在项目开发阶段,对Java项目进行依赖管理和项目构建。

1.1 安装

  • Maven 是一个基于 Java 的工具,所以要做的第一件事情就是安装 JDK

  • 下载Maven,http://maven.apache.org/download.cgi

    1. Maven 3.3 要求 JDK 1.7 或以上

    2. Maven 3.2 要求 JDK 1.6 或以上

    1. Maven 3.0/3.1 要求 JDK 1.5 或以上

  • 配置环境变量

    和JDK配置一样

1.2 pom.xml

  • POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等

  • 执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标

2、Maven仓库

2.1 本地仓库

Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。

2.2 中央仓库

Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库,一般来说,简单的Java项目依赖的构件都可以在这里下载到,需要通过网络才能访问,但是,由于Maven 仓库默认在国外,国内使用难免很慢,所以需要配置为国内的仓库,比如阿里云仓库

2.3 配置中央仓库

  • 找到Maven的安装目录,进入conf目录

  • 打开setting.xml文件

  • 找到mirrors 节点,设置以下内容

      
        alimaven  
        aliyun maven  
        http://maven.aliyun.com/nexus/content/groups/public/  
        central          
    
  • pom.xml文件配置(但是每次创建项目都得重新导入)

       
              
                alimaven  
                aliyun maven  
                
                    http://maven.aliyun.com/nexus/content/groups/public/
                  
                  
                    true  
                  
                  
                    false  
                  
              
    
  • 注意事项

    • 如果 Maven 在中央仓库中也找不到依赖的文件,它会停止构建过程并输出错误信息到控制台。为避免这种情况,Maven 提供了远程仓库的概念,它是开发人员自己定制仓库,包含了所需要的代码库或者其他工程中用到的 jar 文件,pom.xml文件的表头就是远程仓库的配置

2.4 idea配置maven仓库

  1. File ---> Settings ---> Maven

  1. 更改Maven home directory和User settings file

  2. 设置默认创建项目仓库

2.5 重新设置maven本地仓库

1、生成本地仓库默认地址(用户登录):

C:\Users\HAIER\.m2\repository

2、重新设置maven本地仓库地址:

maven安装路径-->conf文件-->settings.xml-->

#53行 /path/to/local/repo设置成
​
D:\repository

3、Maven常用命令

(1)clean:mvn clean
删除当前工程中target文件中的内容
(2) compile:mvn compile
将当前工程中main文件下所有的java文件编译成class文件,输送到当前工程target
(3)test:mvn test
调用test文件夹下所有的测试类中的所有测试方法;生成测试报告
(4)package:mvn package
将我们工程中test文件下所有的java测试类的方式调用执行,进行测试;生成测试报告;如果测试通过,将mian文件下所有的class文件达包成(jar,war)
(5)install:mvn install
与mvn package命令执行相同将(jar,war)推送到maven本地仓库中   

4、Maven坐标三要素

4.1 格式


    junit
    junit
    4.11

4.1.1 解释

:表示这是一个依赖
junit:定义当前Maven项目隶属的实际项目
junit:定义实际项目中的一个Maven项目或子模块
4.11:Maven项目当前所处的版本

4.2 scope标签(了解)

依赖范围 含义
compile 默认就是compile,什么都不配置也就是意味着compile
test 依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行
runntime 被依赖项目无需参与项目的编译
provided 打包的时候可以不用包进去
system 依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用

5、Maven查找依赖

https://mvnrepository.com/search

6、Maven依赖传递

在Maven中,假设A项目依赖B项目,B项目依赖C项目,则能够推断出A项目依赖C项目,这就是Maven依赖传递。也就是jar包的传递

6.1 示例代码

在pom.xml文件中导入一个spring-webmvc依赖,通过Maven查看导入的依赖,可以发现会有很多其他依赖


    org.springframework
    spring-webmvc
    4.1.7.RELEASE

二、配置模板

修改创建 maven 项目的 jar 包内容,从而得到我们所需的模板

1、普通项目

在 maven 本地仓库,找到D:\repository\org\apache\maven\archetypes\maven-archetype-quickstart\1.4

打开maven-archetype-webapp-1.4.jar(压缩工具打开)

修改 pom.xml 文件中,properties内容和build内容,参考如下:案例中把 junit 测试版本改成了 4.12


    UTF-8
    1.8
    1.8

    
        junit
        junit
        4.12
        test
    

    
    
        
            src/main/java
        
        
            src/main/resources
        
    
    
        
        
            org.apache.maven.plugins
            maven-surefire-plugin
            
                true
            
        
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            
                1.8
                1.8
            
        
    

2、web项目

在 maven 本地仓库,找到D:\repository\org\apache\maven\archetypes\maven-archetype-webapp\1.4

web 项目除了要配置普通项目的内容,还需要配置 web.xml 文件内容,参考如下:


    Archetype Created Web Application

同时设置 index.jsp 文件内容

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>


    index


    index   


​

三、jar包运行报错

运行jar包命令:(在jar包所在文件夹cmd)

Java -jar jar包名

当打包的 jar 运行显示没有主清单属性,解决办法有如下两种:

  1. 在 idea 中指定入口方法


    org.apache.maven.plugins
    maven-jar-plugin
    3.0.2
    
        
            
                true
                org.example.App
            
        
    

你可能感兴趣的:(java,maven,servlet)