美文网首页
Maven项目管理利器

Maven项目管理利器

作者: 代号孤狼 | 来源:发表于2017-05-24 21:51 被阅读49次

    我是一个要做程序员的男人。有问题可以随时联系我。

    • 1、maven快速入门
    • 2、maven核心知识
    • 3、maven建立web项目

    1、Maven快速入门

    1.1 maven介绍及环境搭建

    maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
    在apache官网下载maven安装包。
    下载地址:https://maven.apache.org/download.cgi
    目录结构如下:

    • bin/
    • boot/
    • conf/
    • lib/
      将当前的bin目录设为环境变量
      此时maven安装成功

    1.2 maven目录结构

    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">
        <modelVersion>4.0.0</modelVersion>
        
        <!--项目包名-->
        <groupId>com.imooc.maven01</groupId>
        <!-- 模块名-->
        <artifactId>maven01-model</artifactId>
        <!-- 版本-->
        <version>0.0.1SNAPSHOT</version>
        
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
            </dependency>
        </dependencies>
    </project>
    

    mvn compile 项目编译命令
    mvn test 运行测试用力

    执行完成测试后,得到一个target目录
    classes ------------------ 项目字节码文件
    maven-status ------------
    surefire-reports ----------- 测试报告
    test-classes --------------- 测试字节码文件

    mvn package 打包,将项目打包成一个jar包
    jar包名字由 模块名-版本名

    2、Maven核心知识

    2.1 maven基础知识

    常用命令

    mvn -v 查看版本
    mvn compile 编译
    mvn test 测试
    mvn package 打包
    mvn clean 删除target
    mvn install 安装jar包到本地仓库

    在此对mvn install进行说明,将项目发布到本地仓库,若有其他项目需要使用的时候直接在pom.xml中添加项目依赖,可以将该jar包加入使用

    2.2 maven自动创建目录骨架

    archetype插件用于创建maven规定的目录骨架

    运行命令 mvn archetype:generate 进行构建目录骨架
    输入以上的命令,在最后会要求输入 groupId artifactId version package
    mvn archetype:generate -DgroupId:com.xxx.xxx -DartifactId=maven-demo -Dversion=1.0.0SNAPSHOT -Dpackage=com.xxx.xxx.maven-demo

    2.3 maven中的坐标与仓库

    在maven中任何一个依赖、插件项目输出可以认为是一个构件
    构件通过坐标作为其唯一的标识
    groupId artifactId version 构成唯一的坐标
    仓库用来管理项目依赖的,仓库分为本地仓库远程仓库
    远程仓库在lib/maven-model-builder-3.5.0.jar中的pom-4.0.0.xml,这是一个超级的pom所有都会继承此

    <!--可以打开看到一个中央仓库地址-->
      <repositories>
        <repository>
          <id>central</id>    <!--中央仓库唯一标识-->
          <name>Central Repository</name>     <!--中央仓库名称-->
          <url>https://repo.maven.apache.org/maven2</url>   <!--中央仓库地址-->
          <layout>default</layout>   <--默认地址-->
          <snapshots>
            <enabled>false</enabled>   <--禁止下载快照-->
          </snapshots>
        </repository>
      </repositories>
    

    镜像仓库,为了防止下载国外的比较慢
    conf/settings.xml中找到<mirrors>标签添加

    <!--以下只是例子-->
     <mirror>
          <id>maven.net.cn</id>
          <mirrorOf>central</mirrorOf>
          <name>central mirror in china</name>
          <url>http://maven.net.cn/content/groups/public</url>
        </mirror>
    

    更改仓库位置
    默认在当前用户的.m2目录中,mvn install发布的jar包也在此
    找到conf/settings.xml中找到<localRepository>标签中,修改路径

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

    2.4 maven的生命周期与插件

    1、完成的项目构建过程过程:
    clean、compile、test、package、install
    清理、编译、测试、打包、集成测试、验证、部署
    2、maven声明周期
    clen 清理项目

    • pre-clean 执行清理前的工作
    • clean清理上一次构建生成的所有文件
    • post-clean 执行清理后的文件

    default 构建项目(最核心)

    • compile test package install 都属于此

    site 生成项目站点

    • pre-site 在生成项目站点前要完成的工作
    • site 生成项目的站点文档
    • post-site 在生成项目站点后要完成的工作
    • site-deploy 发布生成的站点到服务器上

    3、插件

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase> <!--执行阶段-->
                            <goals>
                                <goal>jar-no-fork</goal> <!--执行目标-->
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    2.5 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></groupId>
        <!--项目名+模块名-->
        <artifactId></artifactId>
        <!--
            第一个0表示大版本号
            第二个0表示分支版本号
            第三个0表示小版本号
            0.0.1
            snapshot快照
            alpha内部测试
            beta公测
            Release稳定
            GA正式版本
        -->
        <version>0.0.1SNAPSHOT</version>
        <!--默认jar
            其他war zip pom
        -->
        <packaging></packaging>
        <!--项目描述名-->
        <name></name>
        <!--项目地址-->
        <url></url>
        <!--项目描述-->
        <description></description>
        <!--开发人员信息-->
        <developers></developers>
        <!--许可证信息,开源框架-->
        <licenses></licenses>
        <!--组织信息-->
        <organization></organization>
        
        <!--继承的父模块-->
        <parent></parent>
        <!--指定多个模块进行编译-->
        <modules>
            <module></module>
        </modules>
        
        <!--依赖列表-->
        <dependencies>
            <!--依赖项-->
            <dependency>
                <!--三个坐标-->
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
                <type></type>
                <!--依赖范围-->
                <scope>test</scope>
                <!--设置依赖是否可选 true false-->
                <optional></optional>
                <!--排除依赖列表-->
                <exclusions>
                    <exclusion></exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        
        <!--通常在父模块中使用-->
        <dependencyManagement>
            <dependencies>
                <dependency>
                </dependency>
            </dependencies>
        </dependencyManagement>
        
        <build>
            <!--插件列表-->
            <plugins>
                <plugin>
                    <!--坐标-->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>2.4</version>
                    <executions>
                        <execution>
                            <phase>package</phase> <!--执行阶段-->
                            <goals>
                                <goal>jar-no-fork</goal> <!--执行目标-->
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </project>
    

    2.6 maven依赖范围

    三种classpath:编译、测试、运行
    test表示只存在于测试的classpath

    <scope></scope>
    中共有6中范围
    compile:默认范围,编译测试运行都有效
    provided:在编译和测试时有效
    runtime:在测试和运行时有效
    test:在测试有效
    system:与本机系统相关联,可移植性差
    import :导入的范围,只使用在dependencyManagement中,表示从其他的pom中导入的dependecy的配置
    

    2.7maven依赖冲突

    1、短路优先,优先解析短的版本
    A->B->C->X(jar)
    A->D->X(jar) 解析该版本
    2、路径一致情况下,先声明先优先

    2.8maven聚合和继承

    对父pom.xml而言需要设置<packaging>pom</packaging>
    <modeules>
    ..加入至模块的信息
    <modeules>
    对子模块而言需要设置
    <parent>
         ...加入父的坐标
    </parent>
    

    相关文章

      网友评论

          本文标题:Maven项目管理利器

          本文链接:https://www.haomeiwen.com/subject/nzboxxtx.html