Maven使用介绍(二)

来源:互联网 发布:剑灵卡刀软件2017 编辑:程序博客网 时间:2024/06/05 08:19

POM &archetype

archetype就是一个project的模板,上面我们生成的project就是用默认的archetype生成的。如果使用不同的archetype,生成的project结构会有所不同。一个archetype指明了

  • 1) 项目的目录结构以及什么目录是放source code,哪些是放test sourcecode,哪些目录是放resource的。
  • 2)一个默认的pom.xml文件,这个默认的pom.xml文件中的groupId,artifactId,version用占位符表示,在创建project的时候通过参数传进来。

pom.xml文件的POM全称是Project ObjectModel,这个文件对于maven的使用者来说是一个和maven交互的渠道,pom.xml包含了一个mavenproject的配置,一个project该如何编译打包,project有哪些依赖项等等。

仔细看一下我们前面创建project的命令:mvn archetype:generateDarchetypeGroupId=org.apache.maven.archetypes-DgroupId=com.mycompany.app -DartifactId=myapp

  1. 1)archetype:generate,这是一个maven的plugin,用来从一个archetype创建一个project,关于plugin后面再说。
  2. 2)DarchetypeGroupId,这个就是指的archetype的groupid,也就是说是用的哪个archetype,或者说用哪个项目模板。
  3. 3)后面的两个参数,用来放大pom.xml文件里面,作为当前创建的project的描述信息。

Project创建好了,看如何去编译,直接进入的project的目录,在命令行下:

mvn compile

编译完后maven会创建一个target目录去保存编译结果。我们需要编译成一个什么样的内容,以及要输出到什么地方等等,都是可以在pom.xml文件里面配置的,但是因为我们目前并没有指定这些内容,所以maven会使用默认值。

我们还可以用maven执行test:

mvn test

第一次执行时,maven会去下载一些依赖项。另外要注意的时,如果我们更改了默认的目录结构,maven会因为找bu到test而无法去执行test。如果只需要编译test可以执行:

mvn test-compile

要把项目打包,执行:

mvn package

mvn会根据pom.xml里面的packaging选项打包成相应的文件。

 

repository &dependency

maven里面有一个repository的概念,当我们的项目依赖于某个jar时,maven会去repository里面去找。repository分两种,一种是远程的,一种是本地的。如果有几个project都用到junit,我们可以把junit放在repository里面,几个project可以公用,节约存储空间而且方便管理,这个repository的位置可以在pom.xml里面设置。

本地的默认的路径是安装用户的目录下的 .m2\repository文件夹。如果一个依赖项在本地的repository里面没有,那么maven会去他自己的远程的repository http://repo.maven.apache.org/maven2 去下载后放到本地的repository里面。

也就是说,我们如果我们的project需要要引用一个依赖项,我们只需要在pom.xml文件中进行配置,maven会自动帮我们去引用。我们之前的创建project里面需要写单元测试,引用到了junit,看pom中的配置:

1
2
3
4
5
6
7
8
<</code>dependencies>
    <</code>dependency>
        <</code>groupId>junit</</code>groupId>
        <</code>artifactId>junit</</code>artifactId>
        <</code>version>3.8.1</</code>version>
        <</code>scope>test</</code>scope>
    </</code>dependency>
</</code>dependencies>

每一个需要为每一个 dependency指明groupId,artifactId,version。scope很简单,意思是说我们需要怎么引用,比如我们上面的例子里面设置的是test,意思是说只在test里面引用junit。但是我们如何知道groupId,artifactId和version呢? 比如我现在想引用log4j,这个几个值怎么填?可以去http://mirrors.ibiblio.org/maven2/ 上去查找。比如log4j,我们就在上面这个地址加上log4j,也就是http://mirrors.ibiblio.org/maven2/junit/。进去后会有一个maven-metadata.xml,打开就可以知道这些值了然后添加这个dependency了。

如果要把一个project安装到本地的repository里面,可以执行下面的命令:

mvn install

 

到这里就说完了创建,编译,测试,打包以及安装,大部分的项目也就是做这些事情。

0 0
原创粉丝点击