• Maven笔记


    1、安装与配置

    1.1  jdk环境

          Maven依赖于jdk,需要配置JAVA_HOME环境变量。

    1.2  maven环境

          Maven解压后不需要安装,只需要配置环境变量

          最好配置M2_HOME以及MAVEN_HOME,因为有些项目会引用不同的环境变量。

          M2_HOME,MAVEN_HOME:D:Program Filesapache-maven-3.3.9;

          PATH: %M2_HOME%in;

          测试:打开cmd,输入:mvn –v;

    2、本地资源库

    Maven的本地资源库是用来存储所有项目的依赖关系(插件jar和其他文件,这些文件被Maven下载)到本地文件夹。很简单,当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。

    默认情况下,Maven的本地资源库默认为 .m2 目录文件夹:

    Windows – C:Documents and Settings{your-username}.m2

    2.1 更新本地资源库

    通常情况下,可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo

    找到 {M2_HOME}confsetting.xml, 添加localRepository

      <!-- localRepository

       | The path to the local repository maven will use to store artifacts.

       |

       | Default: ${user.home}/.m2/repository

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

      -->

      <localRepository>d:/maven-repo</localRepository>

    2.2 测试资源库

    新建工作空间:D:/MavenWorkspace

    CMD: mvn archetype:generate -DgroupId=com.test -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=internal

    注意,以下均以myapp项目为例。另外,DarchetypeCatalog=internal这个参数表示从本地查找catalog配置文件,否则会从远程官网查找,然后你就等吧。。。。。。

    结果:

     

    3、中央存储库

    当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 – https://repo.maven.apache.org/maven2/查找下载。

    3.1 默认中央存储库

          为了测试默认中央存储库,先把本地资源存储库清空,以及myapp项目删掉,然后cmd进入工作空间,输入2.2的构建命令。

     

    由于本地资源库并没有构建项目所需的必备依赖,所以会去中央存储库下载,可以看出默认存储库为:https://repo.maven.apache.org/maven2/

    下的太慢,不喜欢!怎么办?换成国内镜像。

    3.2 中央存储库国内镜像配置

    打开配置文件,2.1那个setting文件。找到mirrors

     

    我已经添加了国内镜像。

    同样,再次清空本地资源库,以及myapp,再次进入工作空间,输入构建命令。

     

    我们可以看到,已经从国内镜像开始Downloading…

    国内镜像地址: http://maven.oschina.net/content/groups/public/

    而且速度极快,与前者不可同日而语,我们要感谢谁呢?

    3.3 远程仓库

    默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。

    远程仓库需要配置在pom.xml文件中,如下:

     

    4、依赖机制

    假如我们要在项目中使用junit进行单元测试,我们怎么达到这个目的?下面分两种情况说明。

    4.1 传统方式

    (1)下载 junit的 jar 库

    (2)复制 jar 到项目类路径

    (3)手动将其包含到项目的依赖

    (4)所有的管理需要一切由自己做

    如果有junit版本升级,则需要重复上述步骤一次。这还是简单的,我们都用过ssh,都知道一个一个jar包给我们添了多少麻烦!

    4.2 maven方式

    (1)   maven坐标

    <groupId>junit</groupId>

    <artifactId>junit</artifactId>

    <version>4.12</version>

    GroupID是项目组织唯一的标识符,实际对应Java的包的结构,是main目录里java的目录结构。

    ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

    它会自动下载junit的4.12 版本库。如果“version”标签被忽略,它会自动升级库时当有新的版本时。

    (2声明 Maven 的坐标转换成 pom.xml 文件

     

    当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库。

    看起来所有的活都让maven做了,我们只需要配置maven坐标即可!

    (3)maven坐标哪里来

    当然去http://mvnrepository.com/,这里尽情的搜索吧!

     

    5、项目文档

    进入myapp,执行cmd命令:mvn  site;

     

    打开看看吧!

     

    6、项目模板

    我们构建myapp用的命令:mvn archetype:generate,其中archetype就是原型的意思,archetype是一个maven的插件,它的作用就是按照模板为我们创建项目结构。

    我们来一步一步在cmd中进行操作:

    (1)mvn archetype:generate -DarchetypeCatalog=internal

     

    这里我们啥也不输入,直接回车,默认会我们选择7: maven-archetype-quickstart-1.1.jar

    (2)几个输入

     

    输入y,回车。

    (3)结果

     

    构建成功,来看下pom文件

     

    可以跟我们构建过程中的输入进行比较下看看!

    现在我们来看看如何生成一个web应用。

    输入命令:mvn archetype:generate -DgroupId=com.test -DartifactId=mywebapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal

    注意以上命令与 2.2中命令的区别。

    7、构建项目

    7.1 mvn package

    Maven是分阶段运行,执行package阶段的时候,所有阶段 validate, compile和 test, 包括目前的阶段package将被执行。

    它会编译源代码,运行单元测试,打包取决于在pom.xml文件的packaging标签,jar或者war.

    注:执行该命令,需要进入到pom.xml的目录中。

    7.2 mvn clean

    清理项目,一般在package之前进行清理,该命令会把target目录 清理掉,保证package到最新的代码。

    7.3 mvn install

    该命令会将你的程序打包到本地资源库中

     

    当然也包括了package的功能

    7.4 mvn eclipse:eclipse

         Generate的maven项目,eclipse并不能用,怎么办?

      执行该命令,就可以了。

      为了保证eclipse正常使用我们配置的maven,需要如下进行设置

     

    然后,右键项目-maven-update project即可!

    7.5 elipse中的两个问题

    在elipse打开项目,会发现两个不满意的地方

     

    Jdk1.5,不满意!

     

    意思是说你这程序是用的elipse默认的GBK编码,是ide自己的,maven感觉不靠谱,给你个提醒。

    如果按传统方式,要去修改首选项一大堆东西,特别是jdk1.5修改成1.7更麻烦。现在我们有maven了,简单至极!

     

    Update一下,再看看!

     

    项目根上的黄色三角叹号都消失了,而且jdk变成了1.7!再次感谢伟大的apache!

    8、maven单元测试

    8.1 准备

    先建个两个src目录。

    (1)test目录,注意是src/test/java,而非src/main/test

    默认包含的测试类:
    **/*Test.java
    **/Test*.java
    **/*TestCase.java
    默认排除的测试类:
    **/Abstract*Test.java

    **/Abstract*TestCase.java

    (2)java目录

    明明没有啊!

    打开project explorer, build path

    Missing!!!!!!

    解决办法,去main目录下手工建立一个java目录,F5一下!

    Package视图里面java目录竟然跑下面去了。。。。对eclipse  mars2表示差评!

    8.2 单元测试配置

     

    Include **/*Test.java, 将会改变默认设置,所有包下面的*Test.java都会被当作测试进行测试。

    Exclude **/TestPerson.java,将会将TestPerson.java排除,不再对其测试,即使其在src/test/java目录下。

    注意:若要使用该方法需要配置testSourceDirectory

     

    不推荐这么用,会让整个程序变得不可控制,结构混乱。

    8.3 测试命令

    (1)mvn test  根据配置测试所有;

    (2mvn -Dtest=com.test.junittest.TestPerson test  只测某一个

    8.4 特别说明

    (1)scope

    由于scope=test,maven不会下载junit jar包。会测试失败。

    (2)测试报告路径和跳过测试

     reportsDirectory=D:/reports

     skipTests=true会跳过测试。

    (5)每个模块在src/test/java目录下建立一个测试包,规则:com.test+模块名;

  • 相关阅读:
    ISC2016训练赛 phrackCTF--Classical CrackMe
    JCTF 2014 小菜一碟
    攻防世界--ReverseMe-120
    lstm torch
    pandas 处理 纽约签到数据集
    python datatime
    tf.keras 模型 多个输入 tf.data.Dataset
    python **kwarg和*args
    java 优先队列 大根堆
    python总结
  • 原文地址:https://www.cnblogs.com/sdnu/p/5429022.html
Copyright © 2020-2023  润新知