• Maven总结


    项目管理构建工具:maven ant gradle ==

     

    项目管理利器(Maven)——maven介绍及环境搭建
    maven可以帮助我们更有效地管理项目,它也是一套强大的自动化构建工具,覆盖了编译、测试、运行、清理、打包和部署等整个项目周期。它提供了一个仓库的概念,统一帮助我们管理项目所依赖的第三方jar包,最大地避免了由于运行环境配置的不同而引起的问题。
    1、目录结构:
    boot目录:包含一个类加载器框架。
    bin目录:包含mvn的运行脚本。
    confing目录:包含配置文件。
    lib目录:包含mvn使用的类库。
    2、配置环境变量:
    M2_HOME maven主目录
    path 添加 ;%M2_HOME%in
    3、检测安装:cmd: mvn -v

    maven定义

     

    pom文件简述: 

    pom.xml:(从struts-core的jar包中的maven中找到)
    ①.<modelVersion>:maven版本。
    ②.<groupId>:项目的包名。
    ③.<artifactId>:模块名(有时候建议是项目名)。
    ④.<version>:0.0.1SNAPSHOT快照版本
    在cmd中运行项目:(先进入项目所存放的目录)
    ①mvn compile 编译主程序源代码,不会编译test目录的源代码。第一次运行时,会下载相关的第三方插件和maven所依赖Jar,可能会比较费时

      已有的maven项目部署到新环境上时,执行mvn compile命令,自动下载(如依赖其他工程类,可以在相应的目录下用install创建jar)相关的Jar (老办法是需要对所依赖的Jar坐下改动,触发自动下载。)

    ②mvn test 运行应用程序中的单元测试
    会生成target文件夹,主程序编译的字节码文件在classes下面,测试程序放在test-classes下,surefire-reports文件夹下面存放是的所生成的测试报告
    ③mvn package 会在target目录下生成一个maven01-model-0.0.1SNAPSHPT.jar

    pom 文件简述

     

    项目管理利器(Maven)——常用的构建命令
    1. mvn -v 版本。
    2. mvn compile 编译。
    3. mvn test 测试。
    4. mvn package 打包。
    5. mvn clean 清除maven生成的target目录。
    6. mvn install 将生成的jar安装到本地仓库中。

    maven编译代码的流程:
    1. 执行mvn compile 命令编译java代码文件;
    2. 如果发现代码中引用到了其他的包文件(jar包);
    3. 首先回去核心配置文件pom.xml文件中去查找相应的配置依赖;如图dependency中
    4. 根据配置依赖先去本地的仓库中查找jar包资源;(可以在相应的目录下用install创建)
    5. 如果本地不存在,则会再去联网到maven的中央仓库中查找。

     

    Maven创建目录的两种方式:(archetype自动创建目录骨架)
    1.archetype:generate 按照提示进行选择。
    2.archetype:generate -DgourpId=组织名,公司网址的反写+项目名称
    -DartifactId=项目名-模块名
    -Dversion=版本号
    -Dpackage=代码所在的包名

     

    项目管理利器(Maven)——maven中的坐标和仓库
    1、坐标。
    2、构件通过坐标作为其唯一标识。
    3、仓库:
    -本地仓库。
    -远程仓库:maven-model-builder-3.3.3.jarorgapachemavenmodel,超级pom.xml文件(其他pom均继承此pom),全球中央仓库地址:https://repo.maven.apache.org/maven2
    -镜像仓库:/conf/setting文件:
    (一旦指定了镜像仓库,所有针对原仓库的访问都会转到镜像仓库,原仓库将不能直接访问)
    <mirror>
    <id>maven.net.cn</id>(该镜像仓库的ID)
    <mirrorOf>central</mirrorOf>(为哪个仓库配置镜像--central为默认仓库--也可以使用通配符*匹配所有仓库)
    <name>central mirror in china</name>
    <url>http://maven.net.cn/content/groups/public</url>
    </mirror>
    4、修改本地仓库的位置:<localRepository>D:/Maven/repository</localRepository>

    maven 镜像仓库

     

    项目管理利器(Maven)——maven的生命周期和插件
    Maven的生命周期大概如下:
    clean compile test package install
    这几个命令对应了一个项目的完整的构建过程,这几个步骤对应的都有插件来完成:
    清理、编译、测试、打包、集成测试、验证、部署
    Maven的生命周期分为三个独立的生命周期(每一个生命周期有分为若干个阶段,其中defaul是最核心的一个):
    1. clean 清理项目
    2. default 构建项目
    3. site 生成项目的站点
    1、clean 清理项目:
    pre-clean :执行清理前的工作
    clean:清理上一次构建生成的所有文件
    post-clean:执行清理后的文件
    2、default构建项目(最核心)
    compile test package install
    3、site 生成项目站点
    pre-site 在生成项目站点之前要完成的工作
    site 生成项目的站点文档
    post-site在生成项目站点后要完成的工作
    site-deploy发布生成的站点到服务器上
    注意:Maven的生命周期对应的命令是顺序执行的,如果没有人为的顺序的一个个执行,那么Maven会默认的自动运行。
    clean package 执行某个阶段时前面的阶段会自动运行

    阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。

     

    控制在哪个阶段运行执行程序
    (自动化测试代码运行在指定阶段)
    以下这段pom信息是否可以控制代码在指定阶段运行???
    <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>

    <name>项目的描述名</name>
    <url>项目的地址</url>
    <description>项目描述</description>
    <developers>开发人员信息</developers>
    <licenses>许可证信息</licenses>

    <!-- 依赖列表 -->
    <dependencies>
    <!-- 依赖项 -->
    <dependency>
    <!-- 坐标 -->
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    <type></type>
    <scope>依赖的范围</scope>(只在依赖的范围内有用,PS:junit如果此处为test,则只在测试的依赖范围内有用,如在主代码引用junit类则报错)
    <optional>设置依赖是否可选,默认是false(子项依赖继承),如为true子项必须显示引入该依赖</optional>
    <!-- 排除依赖传递列表 -->
    <exclusions>
    <exclusion></exclusion>
    </exclusions>
    </dependency>
    </dependencies>

    <!-- 依赖的管理,并不会被运行(不会引用到实际的依赖),一般定义在父模块中,由子模块去继承 -->
    <dependencyManagement>
    <dependencies>
    <dependency></dependency>
    </dependencies>
    </dependencyManagement>

    <!-- 对构建行为提供相应的支持 -->
    <build>
    <!-- 插件列表 -->
    <plugins>
    <plugin>
    <!-- 指定坐标 -->
    <groupId></groupId>
    <artifactId></artifactId>
    <version></version>
    </plugin>
    </plugins>
    </build>

    <!-- 一般在子模块中指定所继承的父模块 -->
    <parent></parent>

    <!-- 模块列表 -->
    <modules>
    <module></module>
    </modules>

    pom 标签说明

  • 相关阅读:
    iOS8 新特性
    iOS Autoresizing Autolayout Size classes
    tabBar的内部控件
    导航控制器的根控制器 是滚动性&普通的frame区别
    选择排序&冒泡排序&折半查找
    站内搜索
    Shell安装
    Xcode themes
    扫码跳转AppStore
    iOS手机APP命名规范整理
  • 原文地址:https://www.cnblogs.com/jxdong116/p/5743181.html
Copyright © 2020-2023  润新知