Maven命令

  作为开发利器的Maven,为我们提供了十分丰富的命令,了解Maven的命令行操作并熟练运用常见的Maven命令还是十分必要的,及时譬如IDEA等工具提供了图形化工具,但其底层还是依靠Maven命令来驱动的。

Maven命令格式如下:

mvn [plugin-name]: [goal-name]

* 执行  plugin-name 插件的 goal-name 目标

 

常见命令

命令 描述
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 tomcat7:run 在Tomcat容器中运行web应用
mvn jetty:run 调用jetty插件的Run目标在Jetty Servlet容器中启动Web应用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

命令参数

-D 传入参数属性

例如:

  mvn package -Dmacen.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 -Pdev -Dmaven.test.skip=true

  表示打包本地环境,并跳过单元测试

posted @   Gazikel  阅读(328)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示