zoukankan      html  css  js  c++  java
  • 03、工具篇--Maven

    Maven

    Maven是Apache旗下的一个开源项目,是纯Java开发的,只是用来管理Java项目的。

    Maven具备如下优点:

    管理外部/内部依赖的jar包
    外部依赖版本不兼容造成的错误
    良好的项目文件结构
    自动化的编译,测试,打包,安装,部署等

    Maven主要应用于大型项目,它可以将各个模块进行独立,可以提高开发效率。

    一般在互联网项目的话都说按照业务来分,比如用户管理、订单管理、支付管理等。

    传统的项目都说按照层级来分,Entity层、Dao层 、Service层、Web层。

    Maven的下载地址:http://maven.apache.org/download.cgi

    基本配置

    环境变量

    使用Maven之前,我们需要配置它的环境变量:

    然后将MAVEN_HOME加入Path变量中:

    %MAVEN_HOME%in
    

    然后打开cmd命令行输入mvn -v命令查看版本号:

    配置文件

    打开Maven的安装目录,找到X:apache-maven-3.5.0conf下的settings.xml文件

    1、修改仓库默认地址

    <localRepository>/path/to/local/repo</localRepository>
    

    Maven有三种仓库:

    本地仓库:程序员自己维护。
    远程仓库:由公司进行维护。
    中央仓库:由Maven团队维护。

    出现下载慢的情况可以修改Maven的仓库为阿里云仓库,右键项目 -> Maven -> open settings.xml来打开设置文件,在<mirrors>标签下加入以下内容即可。

    <?xml version="1.0" encoding="UTF-8"?>
    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <mirrors>
            <!-- 阿里云仓库 -->
            <mirror>
                <id>alimaven</id>
                <mirrorOf>central</mirrorOf>
                <name>aliyun maven</name>
                <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
            </mirror>
        
            <!-- 中央仓库1 -->
            <mirror>
                <id>repo1</id>
                <mirrorOf>central</mirrorOf>
                <name>Human Readable Name for this Mirror.</name>
                <url>http://repo1.maven.org/maven2/</url>
            </mirror>
        
            <!-- 中央仓库2 -->
            <mirror>
                <id>repo2</id>
                <mirrorOf>central</mirrorOf>
                <name>Human Readable Name for this Mirror.</name>
                <url>http://repo2.maven.org/maven2/</url>
            </mirror>
        </mirrors> 
    </settings>
    

    常用命令

    命令 描述
    mvn clean 清理命令,执行clean会删除target目录的内容。
    mvn compile 将src/main/java下的文件编译为class文件输出到target目录下。
    mvn test 测试命令,会执行 src/test/java下的单元测试类。
    mvn package 打包命令,对java工程执行package打包成jar包,对于web工程则打包为war包。
    mvn install 安装命令,执行install将maven打成jar包或war包发布到本地仓库。
    mvn tomcat:run 一键启动Tomcat服务器,并部署项目。

    我们还可以将不同生命周期的命令进行统一执行:

    mvn clean package
    

    IDEA-Maven

    构建项目

    1> 打开IDEA集成开发环境,然后选择:File -> Settings -> Build,Execution,Deployment -> Maven:

    在这里可以设置Maven的版本号,配置文件路径和仓库位置。

    2、然后我们使用Maven来创建项目,注意JDK必须在1.7以上:

    3、点击Next进入下个界面,其中GroupId和ArtifactId<项目名>还有Version,这三个属性目的是标识你的项目的唯一性。

    4、点Finish之后,Maven会根据刚才的配置创建一个基于Maven的Web App。

    目录结构

    以上就是Maven工程的目录结构,下面简单介绍目录的作用:

    java文件夹:主要用于存储java的源代码。
    resources文件夹:一般用来存放一些资源文件和配置文件。
    webapp文件夹:用来存放web配置文件以及jsp页面等,这已经组成了一个原始的web应用。

    注意:所有的配置文件都必须放在resources文件下,代码则放在java目录下:

    依赖管理

    • 添加依赖

      Maven项目中如果想引入Jar包,只需要打开pom.xml配置文件进行配置即可:

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</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</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    

    这样配置后,Maven会自动去下载相应的jar包。如果想打开搜索窗口可以使用快捷键:alt + insert -> Dependency即可

    如果下载到本地的jar包无法自动补全,需要自己手动添加,非常影响效率。通过File->setting->maven->repositories,选择本地仓库更新索引即可。

    除此之外,我们还可以在中央仓库中去查找:

    http://maven.aliyun.com/nexus/#welcome
    
    • 依赖范围

      如果A依赖B,则需要在A的pom,xml文件中添加B的坐标,添加坐标时需要指定依赖范围,依赖范围包括:

    依赖范围 编译 测试 运行 描述
    compile yes yes yes 编译范围,在编译、测试、运行有效,默认依赖范围。
    provided yes yes - 当jdk或者一个容器已提供依赖后使用,编译和测试需要,运行不需要。
    runtime - yes yes 在运行和测试系统的时候需要,编译时不需要。比如jdbc驱动包。
    test - yes - 测试范围依赖,在编译和运行时都不需要,只要在测试编译和测试运行需要。
    system yes yes - 范围依赖和provided类似,但是必须指定本地系统jar路径,不推荐使用。

    依赖范围一般通过<denpendency>下的<scope>标签配置:

    <scope>provided</scope>
    
    • 坐标定义

      在pom.xml中定义坐标,内容包括:groupId、artifactId、version,详细内容如下:

    <!--项目名称,定义为组织名 + 项目名-->
    <groupId>com.legend</groupId>
    <!--模块名称-->
    <artifactId>MavenDemo</artifactId>
    <!--当前项目版本号,snapshot为快照版本,release为正式版本-->
    <version>1.0-SNAPSHOT</version>
    <!--打包类型:
        jar:执行package会打成jar包
        war:执行package会打成war包
        pom:用于maven工程的继承,通过父工程设置为pom-->
    <packaging>pom</packaging>
    
    • 基本配置

      pom.xml是Maven项目的核心配置文件,位于每个工程的根目录,基本配置如下:

    <project>:文件的根节点。
    <modelversion>:pom.xml使用的对象模型版本。
    <groupId>:项目名称,一般写项目的域名。
    <artifactId>:模块名称,子项目名或模块名称。
    <version>:产品的版本号。
    <packaging>:打包类型,一般有jar、war、pom等。
    <name>:项目的显示名,常用于Maven生成的文档。
    <description>:项目描述,常用于Maven生成的文档。
    <dependencies>:项目依赖构建配置,配置项目依赖构建的坐标。
    <build>:项目构建配置,配置编译、运行插件等。
    
  • 相关阅读:
    模块-- HASH
    模块 –SYS
    所谓情商高,就是要有分寸感
    20个很有用的CSS技巧
    CSS3中文手册基础知识
    赠书《JavaScript高级程序设计(第三版)》5本
    能走多远,取决于你与谁同行
    谷歌网站
    开发头条精选0724
    开发头条精选0723
  • 原文地址:https://www.cnblogs.com/pengjingya/p/14995085.html
Copyright © 2011-2022 走看看