经过一段时间maven的使用,终于感受到了maven的好处与强大,真的是太方便了。
整理一下maven的常用命令:
Maven命令列表
- 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文件所在的目录。否则,必以通过参数来指定项目的目录。
命令参数
上面列举的只是比较通用的命令,其实很多命令都可以携带参数以执行更精准的任务。
Maven命令可携带的参数类型如下:
- -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。