您的位置:首页 > 其它

Maven

2016-03-27 11:15 399 查看
资源:
        maven 依赖jar包:http://mvnrepository.com/
        Apache官网maven插件:http://tomcat.apache.org/maven-plugin.html

1.maven的目录结构

src

   -main

      -java

         -package

   -test

      -java

         -package

   -resources

2.maven命令

mvn   -v                  查看maven版本

          compile        编译

          test               测试

          package        打包

          clean             删除target

          install            安装 jar 包到本地仓库
其中,mvn install 命令,示例如下:
    maven01和maven02为两个工程:



[align=center][/align]
[align=left]   maven02中的类需要引用maven02中的类:[/align]



[align=center][/align]
[align=center]maven01[/align]



[align=center][/align]
[align=center]maven02[/align]
[align=center]
[/align]

直接编译maven02会报错,找不到maven01中的类,所以首先打包(mvn install)maven01,将maven01打包放入本地仓库,再将maven01的坐标配置到maven02的pom中,这样,在编译maven02的时候会去本地仓库中找到maven01,编译成功!



3.自动创建目录的两种方式:

1)mvn archetype:generate  按照提示输入相应值

2)mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名

                                              -DartifactId=项目名-模块名

                                              -Dversion=版本号

                        
fab1
                      -Dpackage=代码所存在的包名



[align=left]
[/align]
[align=left]4.maven仓库[/align]
[align=left]1)坐标:构件的唯一标识[/align]
2)仓库:管理项目的依赖

          2.1. 本地仓库:项目中依赖的jar包会存放在本地仓库,默认在C盘用户的.m2文件夹中,需在setting.xml中修改其位置,以防重装系统删除:



          2.2. 远程仓库

                  2.2.1全球中央仓库:本地仓库找不到的依赖会去全球中央仓库中找(https://repo.maven.apache.org/maven2),全球中央仓库的配置在maven 安装目录中 lib 文件夹下的 maven-model-builder.jar 中的pom-4.0.0.xml中:



[align=center]
[/align]



                  2.2.2镜像仓库(国内):因为全球中央仓库的服务器在国外,有时候访问不了,所以需配置国内的镜像仓库(http://maven.oschina.net/content/groups/public),具体配置在 maven 安装目录下的 conf 文件夹下的 setting.xml 中:



[align=left]
[/align]
[align=left]5.eclipse 中创建 maven 工程[/align]
[align=left]       1) eclipse4.0版本以上都默认安装了maven插件,无需单独下载安装。[/align]
[align=left]       2) eclipse中需要做如下设置:[/align]
[align=left]             jre:[/align]



[align=left]            [/align]
[align=left]             maven installations:[/align]



[align=left]      [/align]
[align=left]       3)创建maven工程如下:[/align]
[align=left]             第一步:[/align]
[align=left]
[/align]
           


               




[align=left]                 [/align]
[align=left]                  finish之后的项目结构:[/align]
[align=left]
[/align]



[align=center]
[/align]
[align=center]
[/align]
[align=left]           第二步:[/align]
[align=left]                  右键工程,run-->build...,报错[/align]



[align=left]  [/align]
[align=left]                  为jre添加参数(注意,M2_HOME为环境变量中所配置的maven安装路径):[/align]
[align=center]
[/align]



[align=left]
[/align]
[align=left]
[/align]
[align=left]          finish后重新编译工程,成功![/align]
[align=left]
[/align]
6.生命周期

        package 命令中clean和test会自动运行

        clean 清理项目

                  pre-clean 执行清理前的工作

                  clean 清理上一次构建生成的所有文件

                  post-clean 执行清理后的文件

        default 构建项目(核心)

                  compile test package install

        site 生成项目站点

                  pre-site 在生成项目站点前要完成的工作

                  site 生成项目的站点文档

                  post-site 在生成项目站点后要完成的工作

                  site-deploy 发布生成的站点到服务器上
[align=left]       [/align]
[align=left]         maven本身的功能很少,其强大的功能由插件提供,如source插件(phase为阶段):[/align]
[align=left]
[/align]



[align=left]
[/align]
[align=left]7.pom.xml解析[/align]
[align=left]1)pom常用元素详解[/align]









2)依赖范围:scope
     compile:默认的范围,编译、测试、运行都有效

     provided:编译、测试时有效。比如servletAPI,因为web容器已经包含该jar包,所以在运行阶段不需要,故设置为provided

     runtime:测试、运行时有效,如jdbc API

     test:测试时有效,如junit

     system:编译、测试时有效,但因为与本机系统相关联,所以可移植性差

     import:导入的范围,只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置

3)传递依赖:maven工程具有传递依赖的特性,比如A依赖B,B依赖C,那么在编译A的时候,A就会对C产生依赖。若想去除A对C的依赖,则使用 exclusions。



[align=left]
[/align]
[align=left]4)依赖冲突:多个依赖中有不同版本的jar[/align]
         短路优先:A->B->C-X(2.0jar)

                          A->D->X(2.4jar)
                          则下载2.4jar

         先声明优先:依赖长度相同,哪个依赖先声明则下载对应依赖中的jar

5)聚合和继承

       5.1 聚合:批量打包(注意在聚合的pom文件中,packaging属性修改为pom)



            5.2 继承
                parent项目中,可删除src中的main和test目录,pom文件中用<dependencyManagement>管理依赖,且修改<packaging>为pom,可用<properties>定义属性,以供其他地方引用。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>com.zhaoxueer</groupId>
<artifactId>ABC-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>

<name>ABC-parent</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties>

<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>

              
            child项目中,使用<parent>引用父项目的坐标,并可以删除掉父项目中存在的jar包的version和scope,实现继承。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>

<groupId>com.zhaoxueer</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>A</name>
<url>http://maven.apache.org</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<parent>
<groupId>com.zhaoxueer</groupId>
<artifactId>ABC-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>


注:eclipse中,项目右键maven->update,可更新项目(例如配置文件修改后);
       修改maven的jre版本:setting中加入如下配置

<profile>
<id>jdk-1.7</id>

<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>

<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>

    5.3 聚合继承若在同一个pom文件中,则需要在子模块中加入:<relativePath>../webHy/pom.xml</relativePath>,如在子模块webHy-login中配置如下:



8.创建maven的web工程

[align=left]
[/align]
[align=left]第一步:创建[/align]





[align=left]
[/align]
[align=left]第二步:创建的工程中缺少Servlet API,加入依赖,并且配置scope属性为provided

[/align]





第三步:完善目录结构

               最初目录结构如下:



[align=left]
[/align]
[align=left]                可通过Project Explore视图中对应目录下加source folder,或者Navigator视图下对应目录下添加folder:

[/align]


 or  


[align=left]第四步:查看输出路径是否为class,并将工程转换为web项目
[/align]





[align=left]第五步:删除多余的部署目录,比如test在项目发布的时候是不需要的,故删除
[/align]



第六步:配置tomcat-maven插件(apache官网有示例)

<build>
    <finalName>webDemo</finalName>
    
    <plugins>
        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat6-maven-plugin</artifactId>
          <version>2.2</version>
          <!-- 打包时即运行tomcat -->
          <executions>
              <execution>
                  <phase>package</phase>
                  <goals>
                      <goal>run</goal>
                  </goals>
              </execution>
          </executions>
        </plugin>
    </plugins>
  </build>


第七步:打包运行clean pacakge



[align=left]

[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: