均在含pom.xml文件的路径下执行

maven命令执行是按阶段执行的。如执行mvn package。则实际上已经执行了例如以下命令:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3poMTEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

假设想执行到test停止。执行mvn test

maven项目类型:

jar:java项目
war:web项目

maven依赖

Maven 下载依赖不仅仅是下载 JAR 文件,它同一时候为这个依赖下载一个 POM 文件
在 Maven 中一个依赖不不过一个 JAR。

它是一个 POM 文件。这个 POM 可能也声明了对其他构件的依赖。这些依赖的依赖叫做传递性依赖。

1. 创建Maven的普通java项目

  • mvn archetype:generate -DgroupId=packageName  -DartifactId=projectName   -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2. 创建Maven的Web项目 
  • mvn archetype:generate -DgroupId=packageName
     -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp

    -DinteractiveMode=false

3. 打jar包在本地Repository中安装jar

  • mvn install

4. 仅仅打jar包

  • mvn jar:jar

5. 測试程序

  • java -cp target/my-app-1.0-SNAPSHOT.jar
    com.mycompany.app.App

6. 查看有效的POM。它暴露了 Maven的默认设置

  • mvn help:effective-pom

7. 生成项目相关信息的报告(target/site文件夹下)

  • mvn site

8. 忽略測试失败

        

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3poMTEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="500" height="280">

9. 打包时跳过測试

  • mvn install -Dmaven.test.skip=true

  

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3poMTEyNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" width="300" height="100">

        

10. 安装指定文件到本地仓库

  • mvn install:install-file -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=1.0.0 -Dpackaging=jar
    -Dfile=<myfile.jar>

11. 将项目转化为Eclipse项目

  • mvn eclipse:eclipse

12. 分析项目的依赖信息

  • mvn dependency:analyze
  • mvn dependency:tree 打印整个依赖树
  • mvn dependency:resolve 打印出已解决依赖的列表

13. 查看帮助信息

  • mvn help:help
  • mvn help:help -Ddetail=true

14. 调试

  • mvn -e            显示具体错误
    信息
  • mvn generate-sources    产生应用须要的不论什么额外的源码,如xdoclet。

  • mvn install -X 想要查看完整的依赖踪迹。包括那些由于冲突或者其他原因而被拒绝引入的构件,打开 Maven 的调试标记执行

15. 清除产生的项目
  • mvn clean

    (删除target文件夹下编译内容)


16. 在应用程序用使用多个存储库
<repositories>    
    <repository>      
        <id>Ibiblio</id>      
        <name>Ibiblio</name>      
        <url>http://www.ibiblio.org/maven/</url>    
    </repository>    
    <repository>      
        <id>PlanetMirror</id>      
        <name>Planet Mirror</name>      
        <url>http://public.planetmirror.com/pub/maven/</url>    
    </repository>  
</repositories>

17. Maven项目编译步骤
  1. 第一、main文件夹下的主代码编写完成后。使用Maven进行编译,在项目根文件夹下执行命令mvn clean compile进行项目编译。
  2. 第二、test文件夹下的測试用例编写完成之后就能够调用Maven执行測试,执行mvn clean test进行測试。
  3. 第三、将项目进行编译、測试之后。下一个重要步骤就是打包(package)。在pom.xml中定义<packaging>war</packaging>标签表示将要把project打成什么类型的包(默认是jar类型),我们能够简单地执行命令mvn
    clean package进行打包。

  4. 第四、至此,我们得到了项目的输出,假设我们把项目打成了jar文件而且须要在其它项目中使用的话,就能够复制这个jar文件到其它项目的Classpath中从而使用这个项目中的类。可是。怎样才干让其它的Maven项目直接引用这个jar呢?我们还须要一个安装的步骤,运行mvn
    clean install命令。

  5. 第五、假设项目中有一个拥有main方法的类须要被调用运行。默认打包生成的jar是不可以直接运行的main方法的。由于带有main方法的类信息不会加入到manifest中(我们可以打开jar文件里的META-INF/MANIFEST.MF 文件,将无法看到Main-Class一行)。

    为了生成可运行的jar文件。我们须要借助maven-shade-plugin插 件,配置该插件例如以下:

 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.todaytech.framework.utils.VoConvertXmlUtils</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
  
   plugin元素在POM中的相对位置应该在<project><build><plugins>以下。我们配置了mainClass com.todaytech.framework.utils.VoConvertXmlUtils
,项目在打包时会将该信息放到MANIFEST中。现在执行 mvn clean install。待构建完毕之后打开target/文件夹,我们能够看到S3h3WebWs-0.0.1-SNAPSHOT.jar和original-S3h3WebWs-0.0.1-SNAPSHOT.jar,前者是带有Main-Class信息的可执行jar。后者是原始的jar,打开hello-world-1.0-SNAPSHOT.jar的META-INF/MANIFEST.MF。能够看到它包括这样一行信息:Main-Class:
com.todaytech.framework.utils.VoConvertXmlUtils。

如今,我们在项目根文件夹中运行该jar文件:

   D: \code\S3h3WebWs>java -jar target\S3h3WebWs-0.0.1-SNAPSHOT.jar
   Hello Maven
   控制台输出为Hello Maven。这正是我们所期望的。

在pom.xml文件里添加servlet容器的插件:

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.6</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>

 
启动tomcat:
mvn tomcat:run
 
启动jetty:
mvn jetty:run

POM间关系

  • 依赖关系(dependencies)

依赖关系举例: 

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
</dependency>

  • 继承关系(parent)

继承关系举例:

继承其它pom.xml配置的内容。

maven提供了一个类似java.lang.Object的顶级父pom.xml文件。

能够通过以下命令查看当前pom.xml受到超pom.xml文件的影响:mvn
help:effective-pom。

创建一个各种项目可复用的pom.xml文件。

部署要复用的pom.xml文件:mvn install。

在自己的pom文件里继承上述pom:

 <parent>
<groupId>com.easymorse</groupId>
<artifactId>pom</artifactId>
<version>0.1</version>
</parent>

  • 聚合关系(modules)

聚合关系举例:

用于将多个maven项目聚合为一个大的项目。 比方文件夹结构例如以下:

 . |-- pom.xml |-- module-a `-- pom.xml |-- module-b `-- pom.xml |-- module-c `-- pom.xml |-- foo-all `-- pom.xml

那么总的pom.xml文件类似:
 ... <modules>
<module>module-a</module>
<module>module-b</module>
<module>module-c</module>
<module>foo-all</module>
</modules>

把项目部署到tomcat下的做法:

tomcat配置有管理权限的用户:conf\tomcat-users.xml。

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="marshal" password="password" roles="manager"/>
</tomcat-users>
在pom文件的tomcat插件中加入:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<configuration>
<url>http://localhost:8080/manager</url>
<server>myserver</server>
<path>/mycontext</path>
</configuration>
</plugin>
在.m2/settings.xml文件里添加:
<settings 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/settings-1.0.0.xsd">
<servers>
<server>
<id>myserver</id>
<username>marshal</username>
<password>password</password>
</server>
</servers>
</settings>

  • 执行打包部署。在maven项目文件夹下:  mvn tomcat:deploy
  • 撤销部署:  mvn tomcat:undeploy
  • 启动web应用:mvn tomcat:start
  • 停止web应用:mvn tomcat:stop
  • 又一次部署:mvn tomcat:redeploy
  • 部署展开的war文件:  mvn war:exploded tomcat:exploded

Pom文件解释

pom是指project object Model。

pom是一个xml,在maven2里为pom.xml。是maven工作的基础。在运行task或者goal时,maven会去项目根文件夹下读取pom.xml获得须要的配置信息。

pom文件里包括了项目的信息和maven build项目所需的配置信息,通常有项目信息(如版本号、成员)、项目的依赖、插件和goal、build选项等等。

pom是能够继承的。通常对于一个大型的项目或是多个module的情况,子模块的pom须要指定父模块的pom。

Project pom文件的顶级元素
modelVersion 所使用的object model版本号。为了确保稳定的使用,这个元素是强制性的。除非maven开发人员升级模板,否则不须要改动。

groupId 是项目创建团体或组织的唯一标志符,一般是域名倒写,如groupId  org.apache.maven.plugins就是为全部maven插件预留的。 
artifactId 是项目artifact唯一的基地址名。
packaging artifact打包的方式。如jar、war、ear等等。默觉得jar。这个不仅表示项目终于产生何种后缀的文件。也表示build过程使用什么样的lifecycle。
version artifact的版本号,通常能看见为类似0.0.1-SNAPSHOT,当中SNAPSHOT表示项目开发中。为开发版本号。

name 表示项目的展现名,在maven生成的文档中使用。
url表示项目的地址,在maven生成的文档中使用。
description 表示项目的描写叙述,在maven生成的文档中使用。
dependencies 表示依赖。在子节点dependencies中加入详细依赖的groupId artifactId和version。
build 表示build配置。
parent 表示父pom。
当中groupId:artifactId:version唯一确定了一个artifact。

Artifact构件(jar、war、pom)

这个有点不好解释。大致说就是一个项目将要产生的文件,能够是jar文件,源文件。二进制文件,war文件,甚至是pom文件。每一个artifact都由groupId:artifactId:version组成的标识符唯一识别。须要被使用(依赖)的artifact都要放在仓库(见Repository)中。

Repositories(仓库)

Repositories是用来存储Artifact的。

假设说我们的项目产生的Artifact是一个个小工具,那么Repositories就是一个仓库,里面有我们自己创建的工具,也能够储存别人造的工具,我们在项目中须要使用某种工具时。在pom中声明dependency,编译代码时就会依据dependency去下载工具(Artifact),供自己使用。

对于自己的项目完毕后能够通过mvn install命令将项目放到仓库(Repositories)中
仓库分为本地仓库和远程仓库。远程仓库是指远程server上用于存储Artifact的仓库。本地仓库是指本机存储Artifact的仓库,对于windows机器本地仓库地址为系统用户的.m2/repository以下。

Build Lifecycle(编译过程、生命周期)

是指一个项目build的过程。maven的Build Lifecycle分为三种,分别为default(处理项目的部署)、clean(处理项目的清理)、site(处理项目的文档生成)。他们都包括不同的lifecycle。
Build Lifecycle是由phases构成的,以下重点介绍default Build Lifecycle几个重要的phase:

  • validate 验证项目是否正确以及必须的信息是否可用。

  • compile 编译源码;

  • test 測试编译后的代码,即运行单元測试代码;

  • package 打包编译后的代码。在target文件夹下生成package文件;

  • integration-test 处理package以便须要时能够部署到集成測试环境;

  • verify 检验package是否有效而且达到质量标准;

  • install 安装package到本地仓库,方便本地其他项目使用;

  • deploy 部署,拷贝终于的package到远程仓库和替他开发这或项目共享,在集成或公布环境完毕。

以上的phase是有序的(注意实际两个相邻phase之间还有其它phase被省略。完整phase见lifecycle),以下一个phase的运行必须在上一个phase完毕后

java—(2)maven基本命令的更多相关文章

  1. Java修改maven的默认jdk版本为1.7

    Java修改maven的默认jdk版本 问题: 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2.每次右键项目名-maven->update pro ...

  2. java、maven、tomcat 环境变量配置

    Linux 配置java.maven.tomcat 环境变量 打开 /etc/profile 在下面写上 # java env JAVA_HOME=/usr/local/tools/java   (j ...

  3. JEECG(二) JEECG框架下调用webservice java springmvc maven 调用 webservice

    JEECG系列教程二 如何在JEECG框架下使用webservice 本文所使用的webservice是c#开发的 其实无论是什么语言开发的webservice用法都一样 java springmvc ...

  4. Java Jar maven 下载地址

    Java Jar maven 下载地址 https://repo1.maven.org/maven2/ 根据maven artifactid 查找相关jar

  5. selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)

    本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...

  6. Java+TestNG+Maven+Excel+IDEA接口自动化入门(一)环境配置

    前置: 1.本机环境安装了maven并配置环境变量 2.本机环境安装了IDEA软件 3.本机环境安装了Java jdk 8版本 4.有一定java和maven基础 因为以上网上例子很多,就不再重复赘述 ...

  7. (Win10)Java,Maven,Tomcat8.0,Mysql8.0.15安装与环境配置,以及IDEA2019.3使用JDBC连接MySQL、创建JavaEE项目

    之前用windows+linux的双系统,最近不怎么舒服就把双系统给卸了,没想到除了问题,导致有linux残余,于是就一狠心重装了电脑,又把Java及其相关的一些东西重新装了回来,还好当初存了网盘链接 ...

  8. 使用 Java 和 Maven (JBake) 生成静态网站

    使用 JBake("mvn generate-resources")构建您的静态网站或博客.使用布局.宏和数据文件. 我们迁移了整个www.optaplanner.org网站(13 ...

  9. YangTools从YANG生成Java类(Maven)

    1.说明 ODL提供了Yang Tools工具从YANG文件生成Java类, 本文介绍使用Maven插件的方式生成, 基于yang-maven-plugin这个插件. 2.创建Maven工程 Ecli ...

随机推荐

  1. jsoncpp 0.5 ARM移植

    1.下载jsonapp 0.5 https://github.com/open-source-parsers/jsoncpp 2.编译 platform 没有包含 arm 平台,需要把源码提取出来,独 ...

  2. IntelliJ IDEA代码分屏显示

  3. phpcms功能列表

    上1 站点首页 就是前台首页 会员中心 跳到会员中心页面 搜索 新闻,图片等文档搜索 锁屏 锁住账号 Phpcms 官网 授权 官网查询 支持论坛 官网论坛 帮助 官网帮助 上2 我的面板 个人信息 ...

  4. empireCMS 帝国cms功能总结

    上1 系统 对应左菜单为 系统设置 系统参数设置 基本属性 站点名称,网站地址,关键字,简介,首页模式,php时间, 前台功能,操作时间,来源地址,验证码 用户属性 后台验证码开启,次数限制,时间限制 ...

  5. UVa409_Excuses, Excuses!(小白书字符串专题)

    解题报告 题意: 找包括单词最多的串.有多个按顺序输出 思路: 字典树爆. #include <cstdio> #include <cstring> #include < ...

  6. TIF、JPG图片手动添加地理坐标的方法

    题目:为TIF.JPG图片添加地理坐标/平面直角坐标. 图片来源:GOOGLE EARTH.(当然也可以是其他知道四角点坐标的图片) 截图工具:GEtscreen(此软件截图时可以自动生成图片四角点坐 ...

  7. 字符串变量作mysql查询条件

    原文:http://blog.csdn.net/qing_gee/article/details/41646503 当你的查询条件是一个字符串变量时,你该怎么办,比如字符串可能是“0001ME,000 ...

  8. 转: 用 Go 写一个轻量级的 ldap 测试工具

    前言 这是一个轮子. 作为一个在高校里混的 IT,LDAP 我们其实都蛮熟悉的,因为在高校中使用 LDAP 来做统一认证还蛮普遍的.对于 LDAP 的管理员而言,LDAP 的各种操作自然有产品对应的管 ...

  9. 启明星会议室预定系统Outlook版开始支持Exchange2013与Office365版

    版本启明星会议室预定系统支持Exchange2013与微软云服务Office365版.(注意:Exchange2007与Exchange2010也适合此版本) 1.安装 首页,安装类似启明星普通的会议 ...

  10. GUI程序设计3

    16. 树(JTree)使用示例 例16.1 创建JTree示例. package GUI1; import java.awt.BorderLayout; import java.awt.Contai ...