前篇已经讲过,Maven本质上是一个插件框架,并不执行任何具体的构建任务,它把全部这些任务都交给插件来完成。java
做为开发利器的maven,为咱们提供了十分丰富的命令,了解maven的命令行操做并熟练运用常见的maven命令仍是十分必要的,即便譬如IDEA等工具给我提供了图形界面化工具,但其底层仍是依靠maven命令来驱动的。所以,知其然,知其因此然,方能百战不殆。web
Maven的命令格式以下:tomcat
mvn [plugin-name]:[goal-name]
复制代码
该命令的意思是:执行plugin-name
插件的goal-name
目标。bash
用户能够经过两种方式调用Maven插件的目标:app
lifecycle phase
绑定,这样用户在命令行只是输入生命周期阶段而已,例如Maven默认将maven-compiler-plugin
的compile
目标与compile
生命周期阶段绑定,所以命令mvn compile
其实是先定位到compile
这一辈子命周期阶段,而后再根据绑定关系调用maven-compiler-plugin
的compile
目标。mvn archetype:generate
就表示调用maven-archetype-plugin
的generate
目标,这种带冒号的调用方式与生命周期无关。###经常使用命令框架
命令 | 描述 |
---|---|
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命令可携带的参数类型以下:eclipse
好比命令: mvn package -Dmaven.test.skip=true
以-D
开头,将maven.test.skip
的值设为true
,就是告诉maven打包的时候跳过单元测试。同理,mvn deploy-Dmaven.test.skip=true
表明部署项目并跳过单元测试。webapp
好比项目开发须要有多个环境,通常为开发,测试,预发,正式4个环境,在pom.xml中的配置以下:maven
<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
。
下面结合几个实例来看看maven命令的使用方法。
archetype:create & archetype:generate
复制代码
archetype
是原型
的意思,maven能够根据各类原型来快速建立一个maven项目。
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
命令。
Eclipse Maven运行操做
IDEA Maven运行操做 ![]()
都要选择在运行的项目的pom文件目录 ![]()