Maven(七) maven 常用命令

转载于:http://blog.csdn.net/hynet/article/details/8664747

1. 用Maven 命令创建一个简单的 Maven 项目

在cmd中运行如下命令:

[cpp] view plain copy
 
  1. mvn archetype:generate   
  2. -DgroupId=com.mycompany.app   
  3. -DartifactId=my-app  
  4. -Dversion=1.0   
  5. -DarchetypeArtifactId=maven-archetype-quickstart  

即可在当前目录创建一个简单的 maven 项目,创建的时候会从Maven库中下载相关的依赖。

执行成功后,进入创建的 my-app 目录,打开 pom.xml 文件,内容如下:

[html] view plain copy
 
  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  2.   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   <groupId>com.mycompany.app</groupId>  
  5.   <artifactId>my-app</artifactId>  
  6.   <packaging>jar</packaging>  
  7.   <version>1.0</version>  
  8.   <name>my-app-simple</name>  
  9.   <url>http://maven.apache.org</url>  
  10.   <dependencies>  
  11.     <dependency>  
  12.       <groupId>junit</groupId>  
  13.       <artifactId>junit</artifactId>  
  14.       <version>3.8.1</version>  
  15.       <scope>test</scope>  
  16.     </dependency>  
  17.   </dependencies>  
  18. </project>  

 

POM 包含了一个 project 所需要的所有信息,包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。

我们开发Maven项目的时候,需要为其定义适当的坐标,在这个基础上,其他Maven项目才能应用该项目生成的构件。Maven坐标为各种构件引入了秩序,任何一个构件都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的,它们是groupId,artifactId,version,packaging,class-sifer。其中,前三个是必须的,packaging 是可选的,而 classfier 是不能直接定义的。

下面是一组坐标定义:

[html] view plain copy
 
  1. <groupId>com.mycompany.app</groupId>  
  2. <artifactId>my-app</artifactId>  
  3. <packaging>jar</packaging>  
  4. <version>1.0</version>  

 

groupId :定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一的关系。比如SpringFrameWork这一实际项目,其对应的Maven项目会有很多,如spring-core,spring-context等。这是由于Maven中模块的概念,因此,一个实际项目往往会被划分成很多模块。其次,groupId不应该对应项目隶属的组织或公司。原因很简单,一个组织下会有很多实际项目,如果groupId只定义到组织级别,而后面我们会看到,artifactId只能定义Maven项目(模块),那么实际项目这个层次将难以定义。最后,groupId的表示方式与Java包名的表达方式类似,通常与域名反向一一对应。

 

artifactId : 该元素定义当前实际项目中的一个Maven项目(模块),推荐的做法是使用实际项目名称作为artifactId的前缀。比如上例中的my-app。

 

version : 该元素定义Maven项目当前的版本

 

packaging :定义Maven项目打包的方式,首先,打包方式通常与所生成构件的文件扩展名对应,如上例中的packaging为jar,最终的文件名为my-app-1.0.jar。也可以打包成war, ear等。当不定义packaging的时候,Maven 会使用默认值 jar

 

classifier: 该元素用来帮助定义构建输出的一些附件。附属构件与主构件对应,如上例中的主构件为my-app-1.0.jar,该项目可能还会通过一些插件生成如my-app-1.0-javadoc.jar,my-app-1.0-sources.jar, 这样附属构件也就拥有了自己唯一的坐标

 

2.maven 基本命令

编译compile

在cmd中,将目录切换到 my-app 下,执行mvn clean compile

build success之后我们会在my-app 下看到新增了一个target目录,该目录下存放项目编译后的文件,如.class文件

 

清理clean

cmd目录my-app下执行命令 mvn clean

会将target文件删除,即清理项目,该命令可以结合其他命令运行

 

测试test

cmd 目录 my-app 下执行命令 mvn test

会执行src/test/java 下的Junit 测试代码,在执行测试之前会自动执行编译命令。

打包package

cmd 目录 my-app 下执行命令 mvn package

会将项目打成jar包,并放在target目录中

执行此命令之前会先执行编译和测试命令

 

安装:install

cmd 目录 my-app 下执行命令 mvn install

会将项目jar包安装到本地仓库中,以便其他项目使用

执行此命令之前会先执行编译,测试,打包命令

 

3.创建自定义archetype

创建一个新的 maven 项目,将配置好的公共文件放到相应目录。

注意:上面要生成模版的项目的版本号不能带-SNAPSHOT,否则找不到的,直接用数字1.0等就可以了。

编辑 pom.xml,添加插件

[html] view plain copy
 
  1. <plugins>  
  2.     <plugin>  
  3.         <groupId>org.apache.maven.plugins</groupId>  
  4.         <artifactId>maven-archetype-plugin</artifactId>  
  5.         <version>2.2</version>  
  6.     </plugin>  
  7. </plugins>  

 

打开 cmd 窗口,进入刚才创建的 maven project  的根目录,运行maven命令:

[html] view plain copy
 
  1. mvn archetype:create-from-project  


然后会在target目录下面生成 generated-sources 目录,这个就是生成的 archetype,

进入到 archetype 目录,找到 pom.xml 文件,可修改该文件,增加 deploy 的设置,比如公司有 maven repository manager 服务器,以后就可以将该archetype部署到公司服务器上,便于其他人使用。比如:

[html] view plain copy
 
  1. <distributionManagement>   
  2.     <repository>   
  3.         <id>releases</id>   
  4.         <name>MyCo Internal Repository</name>   
  5.         <url>http://192.168.200.88:9001/nexus/content/repositories/releases</url>   
  6.     </repository>   
  7.     <snapshotRepository>   
  8.         <id>snapshots</id>   
  9.         <name>MyCo Internal Repository</name>   
  10.         <url>http://192.168.200.88:9001/nexus/content/repositories/snapshots</url>   
  11.     </snapshotRepository>   
  12. </distributionManagement>  

 

部署到公司服务器的命令:

[html] view plain copy
 
  1. mvn deploy  


安装到本地仓库

[html] view plain copy
 
  1. mvn install  


archetype安装的地址是在maven安装目录下面的conf/settings.xml文件中指定的(<localRepository>字节)。

默认会在 ~/.m2 目录下面生成一个archetype-catalog.xml文件(和默认的settings.xml在同一个目录),声明了该archetype的groupId、artifactId和其他属性。如果没有找到,则保存在默认 ~/.m2 目录下。

Eclipse创建maven项目过程中,选择的“Default Local”指向的地址就是 ~/.m2,所以文件archetype-catalog.xml会被eclipse自动读取,使用eclipse创建maven项目的时候可以在"Default Local"一项中找到刚才自定义archetype名字。

如果想要卸载刚才安装的archetype,只需要将~/.m2目录下面的archetype-catalog.xml文件中对应的<archetype>字节段删掉,并且把本地仓库中相应groupId和artifactId下面的文件删掉就可以了。


安装到本地仓库中的archetype只可以被自己使用,如果想要共享,那么不要使用install命令。

posted @ 2016-02-28 14:58  熊猫不是猫  阅读(222)  评论(0编辑  收藏  举报