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
表示打包本地环境,并跳过单元测试
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性