Maven 功能简介

Maven 特点:

  1. Maven的编译以及所有的脚本都基于POM(project object model)。
  2. Maven对所依赖的包有明确的定义,如使用那个包,版本是多少,一目了然。
  3. Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。
  4. Maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。

目前Maven的版本为Maven 2.0。

 

简单的管理功能:

生成项目 mvn archetype:create -DgroupId=com.myproject -DartifactId=my-app

my-app
----src
    ----main
        ----java
           ----com
               ----myproject
    ----test
        ----java
            ----com
                ----myproject

       Maven在my-app目录下创建了一个pom.xml文件。这是项目的最基本部分。pom.xml文件包含了一组指令,这些指令告诉Maven如何构建项目和包含哪些其它的特殊指令(POM是“项目对象模型”的缩写)。在默认的情况下,Maven包含了JUnit的依赖以此来鼓励单元测试。

xml 代码
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"     
  2.       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
  3.       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
  4.       http://maven.apache.org/maven-v4_0_0.xsd">        
  5.   <modelVersion>4.0.0</modelVersion>        
  6.   <groupId>com.myproject</groupId>        
  7.   <artifactId>my-app</artifactId>        
  8.   <packaging>jar</packaging>        
  9.   <version>1.0-SNAPSHOT</version>        
  10.   <name>Maven Quick Start Archetype</name>        
  11.   <url>http://maven.apache.org</url>        
  12.   <dependencies>        
  13.     <dependency>        
  14.       <groupId>junit</groupId>        
  15.       <artifactId>junit</artifactId>        
  16.       <version>3.8.1</version>        
  17.       <scope>test</scope>        
  18.     </dependency>        
  19.   </dependencies>        
  20. </project>     

       创建完项目后,可以往项目里添加代码并使用Maven的所有全新技巧。注意以下命令必须在pom.xml文件所在的目录中运行。

 

Maven命令:

  • --mvn test:运行应用程序中的单元测试
  • --mvn package:依据项目生成jar文件
  • --mvn install:将项目的jar文件添加到库中,以备依赖此项目时使用。
  • --mvn site:生成项目相关信息的网站
  • --mvn clean:清除目标目录中的生成结果
  • --mvn eclipse:eclipse:生成Eclipse项目文件

-Dmaven.test.skip=true          忽略test 

 

mvn dependency:sources      利用maven下载源代码

mvn eclipse:clean                  清除eclipse结构

 

mvn dependency:tree            查看maven的依赖树结构

mvn dependency:tree -->tree.txt     输出到文件,-->是windows中输出内容文件的字符,类似于linux中的 > 符号

 

Prevent Project References(排除生成项目依赖关系)

mvn eclipse:eclipse -Declipse.useProjectReferences=false

http://maven.apache.org/plugins/maven-eclipse-plugin/examples/prevent-module-references.html

 

scope参数值的说明:

--compile:默认值。表明是所有任务所需的资源

--test:运行所有的测试用例时所需资源

--runtime:表明是运行时所需资源

--provided:JDK部分或应用服务器的classpath所需的资源

 

Java web项目管理

        mvn archetype:create -DgroupId=com.oreilly -DartifactId=Oreilly -DarchetypeArtifactId=maven-archetype-webapp

        生成的结果结构如下所示:
        Oreilly
             ----src
                    ----main
                          ----resources
                                ----webapp
                                     ----WEB-INF
       pom.xml文件中将包含一行来表明项目应该被打包成war文件: <packaging></packaging> war。现在就可以使用mvn package命令来生成war文件。

 

创建工程项目generate方法:

mvn archetype:generate -DgroupId=com.group -DartifactId=test
mvn archetype:generate -DgroupId=com.group -DartifactId=test -DarchetypeArtifactId=maven-archetype-webapp

 

依赖管理
       创建好项目结构,添加完一些代码,测试并编译好应用程序后,接下来可以看看Maven是如何处理依赖关系的。为了给项目添加一个依赖项,必须将此依赖项添加到pom.xml文件中。下次运行Maven的时候,它将从Ibiblio存储库中得到这个依赖项,并且将此依赖项添加到项目构建路径中。

        例,将功能强大的Quartz库添加到项目中。Quartz是一款用纯Java编写的关于时间安排的开源项目,它是您时间安排需求方面的很好的选择。

xml 代码
  1. <dependency>  
  2.    <groupId>quartz</groupId>  
  3.    <artifactId>quartz</artifactId>  
  4.    <version>1.5.1</version>  
  5.    <scope>compile</scope>  
  6. </dependency>  

       我们仅仅只需添加<dependencies></dependencies>这个元素,Maven就能下载Quartz并将其作为项目中的一个依赖项。不用担心Quartz的依赖项,一个Maven的存储库将包含依赖项自身依赖的资源信息,当Maven下载Quartz的时候,它自身的依赖资源也同样会被下载。

 

手动配置jar包

       例,安装Java Activation框架的jar包。首先从Sun的站点上下载此jar包,接着使用Maven将它导入本地的存储库中。
mvn install:install-file -Dfile=activation.jar
    -DgroupId=javax.activation -DartifactId=activation
    -Dversion=1.0 -Dpackaging=jar

       现在,新的jar包就像其它的项目依赖项一样安装到了本地存储库中。在只需添加依赖声明后,就已准备就绪了。在添加jar包和声明它们为依赖项时,必须确保版本信息的正确性。版本的不匹配会导致Maven在寻找资源时的失败。在导入Sun的jar包时,如果您需要寻求标准命名参数的帮助,可以参考Sun标准jar包命名。

xml 代码
  1. <dependency>  
  2.    <groupId>javax.activation</groupId>  
  3.    <artifactId>activation</artifactId>  
  4.    <version>1.0</version>  
  5.    <scope>compile</scope>  
  6. </dependency>  

Maven 和 Eclipse

       可以首先使用Maven来创建您的项目,然后再用命令mvn eclipse:eclipse来生成Eclipse项目文件,这样最初就能得到一个好的目录结构,但Maven也可通过其Eclipse插件来管理任何项目。

       Maven2.0有着许多实用的特点,并且完成任务十分出色。Maven中最值得称赞的地方就是使用了标准的目录结构和部署。Maven可以通过纯脚本来实现。在文档方面,由于使用了项目站点构建工具,所以当项目构建完成后,您可以查看所有开发的当前状态。

 

Maven聚合与继承

1. Maven聚合:方便快速构建项目

    <modules>

        <module>org.dmwdp.web</module>

        <module>org.dmwdp.jpa.hibernate</module>

    </module>

2. Maven继承:消除重复配置

    推荐做法:建立一个packing为pom的Maven工程,该工程进行properties和依赖包的公共配置。

3. 反应堆

    (1) 反应堆(Reactor)是指所有模块组成的一个构建结构。对于单模块项目,反应堆就是本身,但对于多模块来说,反应堆就包含了个模块之间继承与依赖的关系,从而能自动计算出合理的模块构建顺序。

    (2) 裁剪反应堆

    当用户需要选择性的构建整个项目或者选择构建单个模块时,即仅仅构反应堆中的某些模块,可以裁剪反应堆:

    -am: 同时构建所列模块的依赖模块;

    -amd: 同时构建依赖与所列模块的模块;

    -pl: 构建指定的模块,模块间用逗号分隔;

    -rf: 从执行的模块回复反应堆。

 

Linux/Mac maven 乱码

设置环境变量  MAVEN_OPTS='-Xmx1024m -Dfile.encoding=UTF-8' 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值