• Maven3入门篇


    0、Maven是什么?

          Maven是一个构建工具?不,Maven更是一个项目管理工具,除了构建功能之外Maven还可以生成报告,生成Web站点,推动团队成员之间的交流。

    一、下载、安装、配置都比较简单,这里省略300字···

    二、创建一个新的项目

          第一个步骤完成执行命令:mvn -version  如果能正确返回maven的版本信息,那么恭喜进入第二步。

    mvn archetype:generate

    第一次执行程序会花一段时间下载archetype,每个archetype都有一个number、name、short description用来描述,我们选择一个默认的archetype,直接回车就ok.

    接着:choose a number,同样直接回车默认的选择

     

    接着定义

    grouid:通常是根据公司或组织的网址来定义,如:com.lzjun

    artifactid:项目的id,就是项目的名称,如:"mvnlearn“

    version: 版本号,直接回车,默认是1.0-SNAPSHOT

    packeage:项目的包名,如:com.lzjun

    回车,输入Y,构建完成,生成的项目的目录结构如下所示

    |-- pom.xml

    |-- src

        |-- main

            |-- java

                |-- com

                    |--lzjun

                         | -- App.java

       |-- test

             |-- java

                |-- com

                    |--lzjun

                         | -- AppTest.java

    三、编译、测试项目

    在项目所在路径的命令行终端,执行:mvn compile 

    Maven开始下载依赖包,然后编译,最后提示“BUILD SUCCESS"证明编译成功。在项目mvnlearn目录下面生成target目录,编译好的字节码class问件就在这个目录里面。

    target的目录层次结构:

    ├───mvnlearn-1.0-SNAPSHOT.jar(此文件通常要执行 mvn package 命令才有)

    ├───classes

                |-- com

                     |--lzjun

                         | -- App.class

    ├───maven-archiver

                  ──pom.properties

    ├───surefire

                  ----临时文件

    ├───surefire-reports

               ──com.lzjun.AppTest.txt

               ── TEST-com.lzjun.AppTest.xml

    │───test-classes

             ───com

                     ───lzjun

                           ───AppTest.class

    执行:mvn test

    将执行test包项目的测试用例,最后返回测试结果

    四、理解Project Object Model

    每个maven项目都包含一个pom.xml的文件,文件中包含了与项目相关的所有元信息。如:项目配置文件、缺陷追踪系统、项目组织信息、Licenses、项目的路径、依赖关系等等。

    pom.xml的组织结构通常如下:

    Xml代码  收藏代码
    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    2.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  
    3.     <modelVersion>4.0.0</modelVersion>  
    4.     <!-- The Basics -->  
    5.     <groupId>...</groupId>  
    6.     <artifactId>...</artifactId>  
    7.     <version>...</version>  
    8.     <packaging>...</packaging>  
    9.     <dependencies>...</dependencies>  
    10.     <parent>...</parent>  
    11.     <dependencyManagement>...</dependencyManagement>  
    12.     <modules>...</modules>  
    13.     <properties>...</properties>  
    14.       
    15.     <!-- Build Settings -->  
    16.     <build>...</build>  
    17.     <reporting>...</reporting>  
    18.       
    19.     <!-- Project Meta Data -->  
    20.     <name>...</name>  
    21.     <description>...</description>  
    22.     <url>...</url>  
    23.     <inceptionYear>...</inceptionYear>  
    24.     <licenses>...</licenses>  
    25.     <organization>...</organization>  
    26.     <developers>...</developers>  
    27.     <contributors>...</contributors>  
    28.       
    29.     <!-- Environment -->  
    30.     <issueManagement>...</issueManagement>  
    31.     <ciManagement>...</ciManagement>  
    32.     <mailingLists>...</mailingLists>  
    33.     <scm>...</scm>  
    34.     <prerequisites>...</prerequisites>  
    35.     <repositories>...</repositories>  
    36.     <pluginRepositories>...</pluginRepositories>  
    37.     <distributionManagement>...</distributionManagement>  
    38.     <profiles>...</profiles>  
    39. </project>  

    项目坐标:groupId,artifactId,version是POM中必须包含的最小基本域信息。

    POM包括四个主要的部分

      1、基本属性:  (groupId、artifact、version)、依赖管理、层级结构、还包括模块和项目级别属性

      2、构建设置:包含项目构建的细节设置

      3、项目元数据:包含项目规范的细节,如:名字、组织机构、开发者、URL、启动时间等等

      4、环境信息:包括版本控制信息、问题追踪管理、持续集成、邮件列表、仓储等等、

    五、Maven的生命周期

    maven有三个相互独立的生命周期,分别是default、clean、site

    Default lifecycle:负责处理项目的编译、测试、部署,有超过20个阶段,常用的有如下:

       validate:验证整个项目的信息是否可用或正确

       compile:编译源代码

       test:在测试套件里运行单元测试

       package:为编译的代码打包

       integration-test:在集成测试环境中处理package

       verify:验证package是否合法

       install:本地仓储中安装package

       deploy:在远程仓储中安装最终的package

    以上阶段都是按先后顺序执行,如果直接执行deploy,maven会先从validate开始执行,直到deploy。

    Clean lifecycle:处理项目的清空工作,包含以下阶段:

        pre-clean:清理之前的一些预处理。

        clean:清除通过之前构建生成的所有文件

        post-clean:清理之后的一些处理(类似异常代码块中的finally)

    Site lifecycle:项目站点文档的生成工作

       pre-site:站点生成前的准备工作

       site:生成文档

       post-site:处理站点生成完之后的一些工作,及为部署做准备

       site-deploy:给指定的web服务器部署站点文档

    关于错误:

    Convert to maven project: An internal error occurred during: “Enabling Maven Dependency Management”. Unsupported IClasspathEntry kind=4

    有个解决办法是先  mvn eclipse:clean 在eclipse中刷新项目后再convert maven project

    maven 测试指定类:

    mvn test -Dtest=className 

    mvn -Dtest=className test

    执行单个:mvn test -Dtest=UserTest

    执行多个:mvn test -Dtest= UserTest ,User2Test,User3Test

    运用通配符:mvn test -Dtest=User*Test

    maven 测试指定方法:

    mvn test -Dtest=className#method 或 mvn -Dtest=className#method test

    mvn test -Dtest=UserTest#addtest

    maven package without test:

    mvn package -Dmaven.test.skip=true

    mvn deploy -Dmaven.test.skip=true

    可以把项目上传到maven私服

    (setting.xml)配置

    Xml代码  收藏代码
    1. <server>  
    2.      <id>internal</id>  
    3.      <username>xxx</username>  
    4.      <password>xxx</password>  
    5.    </server>  
    Xml代码  收藏代码
    1. <mirror>  
    2.         <id>internal</id>  
    3.         <name>Cloud Archiva</name>  
    4.         <url>http://192.168.0.58:8181/archiva/repository/internal</url>  
    5.         <mirrorOf>*</mirrorOf>  
    6.     </mirror>  

      Maven remote debug

    配置环 境变量

    linux:

    export MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

     windows:

    set MAVEN_OPTS=-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

     执行们命令后就会监听端口8787。(此方法在笔者测试下虽然监听了该端口,但是并不在跳到本地eclipse中的断点里来),只好换一种方法

    mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001 -Xnoagent -Djava.compiler=NONE" test TestClazz #TestClazz为测试类

    如果是普通的Java项目

    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 Test #Test是入口类
    或者
    java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar Test.jar #jar包

    如果是tomcat项目

    windows:在startup.bat文件中加上

    set JPDA_ADDRESS=8000 #监控端口,非web项目端口
    call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS% #在原有的这行加上jpda

    linux运行
    catalina.sh jpda run # windows 要运行catalina.bat脚本

    在eclipse中配置好远程调试的参数即可调试(右键project名称->Debug As->Debug Configures)进行配置

    Cannot-read-lifecycle-mapping

    清空 ~/.m2/repository

    http://forum.springsource.org/showthread.php?129882-Error-Cannot-read-lifecycle-mapping

    转自http://liuzhijun.iteye.com/blog/1472008

  • 相关阅读:
    SQL
    HTTP协议
    工具命令
    安全策略
    日志与审核
    python视频教程免费下载,百度云网盘资源,全套!
    《Python基础教程(第3版)》PDF电子版百度云网盘免费下载
    老男孩Python全栈开发视频教程全套完整版!免费分享!
    Pycharm激活码分享,2020最新Pycharm永久激活码~
    老男孩Python视频教程全套完整版!无偿分享~
  • 原文地址:https://www.cnblogs.com/ukouryou/p/2814064.html
Copyright © 2020-2023  润新知