4. maven命令

作者: ifeelok0319 | 来源:发表于2017-07-10 13:32 被阅读207次

    转载

    命令简介

    maven的命令格式如下:
    mvn [plugin-name]:[goal-name]
    该命令的意思是:执行plugin-name插件的goal-name目标(或者称为动作)。
    用户可以通过两种方式调用Maven插件目标。

    • 第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只是输入生命周期阶段而已。例如Maven默认将maven-compiler-plugincompile目标与compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugincompile目标。
    • 第二种方式是直接在命令行指定要执行的插件目标,例如mvnarchetype:generate 就表示调用maven-archetype-plugingenerate目标,这种带冒号的调用方式与生命周期无关。

    常用命令

    • mvn –version 显示版本信息
    • mvn clean 清理项目生产的临时文件,一般是模块下的target目录
    • mvn compile 编译源代码,一般编译模块下的src/main/Java目录
    • mvn package 项目打包工具,会在模块下的target目录生成jar或war等文件
    • mvn test 测试命令,或执行src/test/java/下junit的测试用例.
    • mvn install 将打包的jar/war文件复制到你的本地仓库中,供其他模块使用
    • mvn deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
    • mvn site 生成项目相关信息的网站
    • mvn eclipse:eclipse 将项目转化为Eclipse项目
    • mvn dependency:tree 打印出项目的整个依赖树
    • mvn archetype:generate 创建Maven的普通java项目
    • mvn tomcat:run 在tomcat容器中运行web应用
    • mvn jetty:run 调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

    运行maven命令的时候,首先需要定位到maven项目的目录,也就是项目的pom.xml文件所在的目录。否则,必以通过参数来指定项目的目录。

    命令参数

    -D 传入属性参数

    比如命令:
    mvn package -Dmaven.test.skip=true
    -D开头,将maven.test.skip的值设为true,就是告诉maven打包的时候跳过单元测试。同理,mvn deploy -Dmaven.test.skip=true代表部署项目并跳过单元测试。

    -P 使用指定的Profile配置

    比如项目开发需要有多个环境,一般为开发,测试,预发,正式4个环境,在pom.xml中的配置如下:

    <profiles>
          <profile>
                 <id>dev</id>
                 <properties>
                        <env>dev</env>
                 </properties>
                 <activation>
                        <activeByDefault>true</activeByDefault>
                 </activation>
          </profile>
          <profile>
                 <id>qa</id>
                 <properties>
                        <env>qa</env>
                 </properties>
          </profile>
          <profile>
                 <id>pre</id>
                 <properties>
                        <env>pre</env>
                 </properties>
          </profile>
          <profile>
                 <id>prod</id>
                 <properties>
                        <env>prod</env>
                 </properties>
          </profile>
    </profiles>
     
    ......
     
    <build>
          <filters>
                 <filter>config/${env}.properties</filter>
          </filters>
          <resources>
                 <resource>
                        <directory>src/main/resources</directory>
                        <filtering>true</filtering>
                 </resource>
          </resources>
     
          ......
     
    </build>
    

    profiles定义了各个环境的变量id,filters中定义了变量配置文件的地址,其中地址中的环境变量就是上面profile中定义的值,resources中是定义哪些目录下的文件会被配置文件中定义的变量替换。
    通过maven可以实现按不同环境进行打包部署,命令为:
    mvn package -P dev
    其中dev为环境的变量id,代表使用id为dev的profile。

    -e 显示maven运行出错的信息

    -o 离线执行命令,即不去远程仓库更新包

    -X 显示maven允许的debug信息

    -U 强制去远程更新snapshot的插件或依赖,默认每天只更新一次

    实例

    archetype:create是maven 3.0.5之前创建项目的命令,例如创建一个普通的Java项目:
    mvn archetype:create -DgroupId=packageName -DartifactId=projectName -Dversion=1.0.0-SNAPSHOT
    后面的三个参数用于指定项目的groupId、artifactId以及version。
    创建Maven的Web项目:
    mvn archetype:create -DgroupId=packageName -DartifactId=projectName -DarchetypeArtifactId=maven-archetype-webapp
    archetypeArtifactId参数用于指定使用哪个maven原型,这里使用的是maven-archetype-webapp,maven会按照web应用的目录结构生成项目。
    需要注意的是,在maven 3.0.5之后,archetype:create命令不在使用,取而代之的是archetype:generate命令。
    该命令会以交互的模式创建maven项目,不需要像archetype:create那样在后面跟一堆参数,很容易出错。

    mvn archetype:generate -DarchetypeCatalog=internal

    help:describe
    maven有各种插件,插件又有各种目标。我们不可能记得每个插件命令。maven提供了查询各类插件参数的命令:mvn help:describe
    例如:mvn help:describe -Dplugin=help
    代表查询help 插件的命令规范,然后maven就会告诉你该命令有几个goal,各种参数的的意义以及配置方法。

    相关文章

      网友评论

        本文标题:4. maven命令

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