maven参数解释

简介

    在前一篇文章里已经介绍了怎么安装和配置maven。在安装好之后我们这里来看看怎么通过maven来构建一个工程并详细的了解一下maven的配置文件里各配置项是什么意思。只有理解清楚这些之后我们才能够更好的运用好这个工具。

 

创建一个示例工程

    首先我们尝试创建一个普通的工程。在命令行的情况下,我们输入如下命令:

Shell代码   收藏代码
  1. mvn archetype:generate -DgroupId=com.yunzero -DartifactId=SampleProject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false  

    系统会显示如下的输出:

    

Shell代码   收藏代码
  1. [INFO] Scanning for projects...  
  2. [INFO]                                                                           
  3. [INFO] ------------------------------------------------------------------------  
  4. [INFO] Building Maven Stub Project (No POM) 1  
  5. [INFO] ------------------------------------------------------------------------  
  6. [INFO]   
  7. [INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>  
  8. [INFO]   
  9. [INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<  
  10. [INFO]   
  11. [INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---  
  12. [INFO] Generating project in Batch mode  
  13. [INFO] ----------------------------------------------------------------------------  
  14. [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0  
  15. [INFO] ----------------------------------------------------------------------------  
  16. [INFO] Parameter: groupId, Value: com.yunzero  
  17. [INFO] Parameter: packageName, Value: com.yunzero  
  18. [INFO] Parameter: package, Value: com.yunzero  
  19. [INFO] Parameter: artifactId, Value: SampleProject  
  20. [INFO] Parameter: basedir, Value: /home/frank/programcode/spring  
  21. [INFO] Parameter: version, Value: 1.0-SNAPSHOT  
  22. [INFO] project created from Old (1.x) Archetype in dir: /home/frank/programcode/spring/SampleProject  
  23. [INFO] ------------------------------------------------------------------------  
  24. [INFO] BUILD SUCCESS  
  25. [INFO] ------------------------------------------------------------------------  
  26. [INFO] Total time: 13.278s  
  27. [INFO] Finished at: Sun Dec 14 22:32:31 CST 2014  
  28. [INFO] Final Memory: 12M/239M  
  29. [INFO] ------------------------------------------------------------------------  

   这表示一个工程已经建立好了。那么我们前面的这个命令表示什么意思呢?它究竟做了什么?我们又创建了一个什么样的工程呢?我们一点点详细的分析过来。

    先看我们建立的这个工程的结构:

 

    如上图所示,这里表示一个普通的java console工程结构。这是我们用命令行建立的。如果我们考虑用IDE工具来建立工程呢?也可以用类似的方式。我们以eclipse为例。

1. 首先选择新建一个maven project:

 

2.  然后选择Next, 在这里选择工程所在的目录,我们选择默认的位置,如下图:

 3. 选择next之后再继续选择archetype

 

 

 

    这里,也选择默认的maven-archetype-quickstart。然后继续选择Next。如果我们留意的话会发现这个类型的archetypeid也就是我们前面命令行创建工程里指定的。

 

4. 在这一步选择Group Id和Artifact Id:

 

   在这一步,设置的Group Id和artifact Id也就是我们前面命令行里指定的那样。这样,我们就建立了一个简单的maven示例工程了。它的结构如下图:

 

 

     这样,我们通过命令行和IDE两种方式创建了一个示例工程。下面我们针对命令行的参数和pom.xml文件里的一些项进行详细的讨论。

 

参数解释

     我们在最开始创建maven工程的时候指定了archetype参数。然后在后面的参数里又指定了archetypeartifactId。

 

archetype: 指的是我们如果要通过maven创建一个项目工程的话,因为具体针对不同类型的项目它的结构组织不一样,于是maven就提供了一个项目创建的模板。这些模板包含了一些最佳实践,这样可以使得我们在构建项目的时候节约不少实践。比如说,我们需要创建一个普通的console应用,那么它的结构模板必然是一种样式,而如果要构建一个JavaEE的项目,它的结构则不一样。既然我们需要针对不同项目提供不同的模板,于是就有了一个需要怎么来定义和区分它们的问题。这样就有了archetypeArtifactId。

 

archetypeArtifactId: 指的是针对archetype的具体模板。比如说maven-archetype-quickstart表示的是一个创建的普通maven工程。针对不同类型的工程,我们可以在maven的官网上查找对应的类型,也可以在通过IDE创建工程的时候去筛选 。

 

除了上述的两个之外,还要两个比较重要的参数:

 

groupId: 相当于一个对应项目的唯一区分标识。这样说起来还是有点模糊。如果考虑到我们做java项目的时候,要对一些包命名,而且一些包的命名需要具有唯一性。所以这个groupId就是我们创建的项目里最高层包的命名。

 

artifactId: 表示生成的包的名字。当我们将一个项目编译后打包的时候,需要确定一个打包名字并部署到实际测试或者生产环境中,所以在这个地方来确定最后包的名字。

 上述的几个参数就是我们创建maven工程用到的。在前面的参数里,我们还设置了 -DinteractiveMode=false。它表示禁用交互的模式来创建工程。这表示什么意思呢?因为我们在命令行里已经指定了项目的类型和包名以及结构。如果我们想省略这一点的话,可以直接运行:

Shell代码   收藏代码
  1. mvn archetype:generate  

  这个时候系统会显示所有的archetype类型,然后交互的提示我们输入对应的archetype,以及groupId和artifact Id。 

 

pom.xml文件 

    我们再来看看通过命令行自动生成的pom.xml文件:

Xml代码   收藏代码
  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/xsd/maven-4.0.0.xsd">  
  3.   <modelVersion>4.0.0</modelVersion>  
  4.   
  5.   <groupId>com.yunzero</groupId>  
  6.   <artifactId>SampleProject</artifactId>  
  7.   <version>0.0.1-SNAPSHOT</version>  
  8.   <packaging>jar</packaging>  
  9.   
  10.   <name>SampleProject</name>  
  11.   <url>http://maven.apache.org</url>  
  12.   
  13.   <properties>  
  14.     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  15.   </properties>  
  16.   
  17.   <dependencies>  
  18.     <dependency>  
  19.       <groupId>junit</groupId>  
  20.       <artifactId>junit</artifactId>  
  21.       <version>3.8.1</version>  
  22.       <scope>test</scope>  
  23.     </dependency>  
  24.   </dependencies>  
  25. </project>  

     前面的groupId和artifactId也定义在这里。<version>部分表示我们常用版本管理中定义的版本号,比如我们常用的RC, alpha, beta, SNAPSHOT。在这里SNAPSHOT表示当前项目处在一个开发的阶段。当一个工程使用SNAPSHOT的依赖时,Maven会每次去获取最新的SNAPSHOT版本。

    还有一个是<packaging>,它表示对于这个工程,需要创建一个JAR包。

    在下面的<properties>里面,我们通常用来定义一些自定义的变量,方便他们重用。比如说我们需要使用某些版本的jar组件,它们有多个组件,但是是同样的版本,我们就可以这样来定义,比如说:

Xml代码   收藏代码
  1. <properties>  
  2.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  3.         <jdk.version>1.6</jdk.version>  
  4.         <spring.version>4.1.2.RELEASE</spring.version>  
  5.   </properties>  
  6. <!-- Spring Core -->  
  7.         <dependency>  
  8.             <groupId>org.springframework</groupId>  
  9.             <artifactId>spring-core</artifactId>  
  10.             <version>${spring.version}</version>  
  11.         </dependency>  
  12.           
  13.         <dependency>  
  14.             <groupId>org.springframework</groupId>  
  15.             <artifactId>spring-context</artifactId>  
  16.             <version>${spring.version}</version>  
  17.         </dependency>  

     这里我们用到了spring-core, spring-context等几个artifact,于是可以直接引用同样的版本信息变量。

    除了这些以外,刚才我们看到很重要的一个就是依赖信息的定义,比如这里我们项目中需要使用到spring-core, spring-context,于是我们就需要在<dependencys>里面定义一个<dependency>的子元素。一个dependency里面指定一个组件的groupId, artifactId和version。可能我们有时候会有点疑惑,这些jar包到哪里去找呢?一般如果我们知道需要使用哪些组件的话,可以去:http://search.maven.org/来搜索需要的组件,在那里可以将需要的maven依赖定义信息直接拷过来。比如下图的spring依赖信息:

     这样,一个基本的maven工程所需要的信息就配置好了。在后续的文章里,我们再讨论maven的生命周期和一些plugin的使用情况。

 

分享到:   
参考知识库
语音识别与合成知识库 172  关注 | 141  收录
计算机视觉知识库 505  关注 | 187  收录
自然语言理解和处理知识库 181  关注 | 54  收录
知识工程知识库 43  关注 | 53  收录
评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值