• Maven概要[转]


    1. Maven介绍

    1.1. 简介

    java编写的用于构建系统的自动化工具。

    目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。 

    1.2. Maven资源

    1.3. Maven的基本功能

    • 构建:比如生成class、jar、war或者ear文件
    • 生成文档:比如生成javadoc、网站文档
    • 生成报告:比如junit测试报告
    • 生成依赖类库:生成文档,说明项目多其他软件的依赖
    • 有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等
    • 发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用
    • 部署:比如,web应用程序,自动部署到指定的服务器上

     

    2. Maven使用

    2.1. Maven的安装和配置

    • 从官方网站下载最新的Maven分发包http://maven.apache.org/download.html,当前为2.0.9;
    • 解压缩到本地;
    • 配置maven, 将maven/bin目录设置到windows环境变量Path中
    • 检查maven是否安装成功, 在命令行中执行mvn -version
    •  

    2.2. Maven的基本使用

    Maven的基本使用介绍通过命令行编写简单的java和web项目。

    2.2.1. 实现Java项目

    通过maven在命令行下创建普通java项目,也就是main方法执行的项目或者jar文件的类库。

    2.2.1.1. 创建Maven项目

    执行:

    mvn archetype:generate

    在交互界面中:

    • Choose a number: 回车即可,也就是选择15
    • Define value for groupId: 输入组织id,比如easymorse.com
    • Define value for artifactId:输入项目名称,比如helloworld
    • Define value for version: 输入版本号,可以直接回车,默认是1.0-SNAPSHOT
    • Define value for package: java的包名,比如com.easymorse
    • 然后回车表示确认上述输入即可。

    观察helloworld目录(Define value for artifactId输入的项目名称)下生成的文件和目录:

    • 项目构建文件: pom.xml
    • 代码框架: srcmainjavacomeasymorseApp.java
    • 测试代码: src estjavacomeasymorseAppTest.java

    2.2.1.2. 运行Maven项目

    命令行进入helloworld目录Define value for artifactId输入的项目名称)。

    1.项目打包:mvn package

    检查命令生成了什么?

    • target目录
    • 编译了代码
    • 编译了测试代码
    • 使用junit测试并生成的报告
    • 生成代码的jar文件 

    2.编译源程序:mvn compile

    3.编译并测试:mvn test

    4.清空生成的文件:mvn clean

     

    5.将maven项目转化为eclipse项目

    5.1命令行运行:mvn eclipse:eclipse

    5.2打开eclipse,菜单选择:file>import>general>existing projects into workspace,在对话框中选中目录,导入即可。

    5.3如果要清除有关eclipse项目的配置信息:mvn -Dwtpversion=1.0 eclipse:clean

     

     

    2.2.2. 实现Web项目 

    通过maven在命令行下创建java web项目。

    2.2.2.1. 创建Maven项目

    在命令行输入,这一步和创建java项目类似:mvn archetype:generat

    交互步骤说明:

    • Choose a number: 回车即可,也就是选择18,这里和java普通项目不一样
    • Define value for groupId: 输入组织id,比如easymorse.com
    • Define value for artifactId:输入项目名称,比如helloworld
    • Define value for version: 输入版本号,可以直接回车,默认是1.0-SNAPSHOT
    • Define value for package: java的包名,比如com.easymorse
    • 然后回车表示确认上述输入即可。

    需要在pom.xml文件中增加servlet容器的插件:

    <build>

         <plugins>

              <plugin>

                   <groupId>org.codehaus.mojo</groupId>

                   <artifactId>tomcat-maven-plugin</artifactId>

              </plugin>

              <plugin>

                   <groupId>org.mortbay.jetty</groupId>

                   <artifactId>maven-jetty-plugin</artifactId>

                   <version>6.1.6</version>

              </plugin>

              <plugin>

                   <artifactId>maven-compiler-plugin</artifactId>

                   <configuration>

                       <source>1.6</source>

                       <target>1.6</target>

                       <encoding>UTF-8</encoding>

                   </configuration>

              </plugin>

        </plugins>

    </build>

     

    • tomcat插件
    • jetty插件
    • 编译插件的配置

     

     

    repository目录的作用

    repository的位置,在用户目录的.m2目录下。

    repository目录的作用,对依赖类库的缓存。

     

    2.2.2.2. 运行Maven项目

    项目打包: mvn package 

    启动tomcat: mvn tomcat:run

    启动jetty:mvn jetty:run

     

    3. POM文件的基本配置 

    3.1. POM介绍

    3.1.1. 什么是POM

    Project Object Model,项目对象模型。

    通过xml格式保存的pom.xml文件。

    作用类似ant的build.xml文件,功能更强大。

    该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等。

    3.1.2. 快速浏览

    一个完整的pom.xml文件,放置在项目的根目录下。

    <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/maven-v4_0_0.xsd">

      <modelVersion>4.0.0</modelVersion>

     

      <!-- The Basics -->

      <groupId>...</groupId>

      <artifactId>...</artifactId>

      <version>...</version>

      <packaging>...</packaging>

      <dependencies>...</dependencies>

      <parent>...</parent>

      <dependencyManagement>...</dependencyManagement>

      <modules>...</modules>

      <properties>...</properties>

     

      <!-- Build Settings -->

      <build>...</build>

      <reporting>...</reporting>

     

      <!-- More Project Information -->

      <name>...</name>

      <description>...</description>

      <url>...</url>

      <inceptionYear>...</inceptionYear>

      <licenses>...</licenses>

      <organization>...</organization>

      <developers>...</developers>

      <contributors>...</contributors>

     

      <!-- Environment Settings -->

      <issueManagement>...</issueManagement>

      <ciManagement>...</ciManagement>

      <mailingLists>...</mailingLists>

      <scm>...</scm>

      <prerequisites>...</prerequisites>

      <repositories>...</repositories>

      <pluginRepositories>...</pluginRepositories>

      <distributionManagement>...</distributionManagement>

      <profiles>...</profiles>

    </project>

     

     

     

    3.2. 基本设置

    3.2.1. 协作关系

    <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/maven-v4_0_0.xsd">

      <modelVersion>4.0.0</modelVersion>

     

      <groupId>org.codehaus.mojo</groupId>

      <artifactId>my-project</artifactId>

      <version>1.0</version>

      <packaging>war</packaging>

    </project>

     

    • groupId : 组织标识,例如:org.codehaus.mojo,在M2_REPO目录下,将是: org/codehaus/mojo目录。
    • artifactId : 项目名称,例如:my-project,在M2_REPO目录下,将是:org/codehaus/mojo/my-project目录。
    • version : 版本号,例如:1.0,在M2_REPO目录下,将是:org/codehaus/mojo/my-project/1.0目录。
    • packaging : 打包的格式,可以为:pom , jar , maven-plugin , ejb , war , ear , rar , par

     

    3.2.2. POM间关系

    3.2.2.1. 依赖关系

    依赖关系列表(dependency list)是POM的重要部分。

      <dependencies>

        <dependency>

          <groupId>junit</groupId>

          <artifactId>junit</artifactId>

          <version>4.0</version>

          <scope>test</scope>

        </dependency>

        ...

      </dependencies>

    • groupId , artifactId , version :
    • scope : compile(default),provided,runtime,test,system
    • exclusions

    如何查到依赖的类库?

    一般可以通过这个网站:http://www.mvnrepository.com

    比如查询hibernate,可以找到结果列表中的hibernate类库条目。

    点击:http://www.mvnrepository.com/artifact/org.hibernate/hibernate,

    选择版本,比如3.2.6ga,即:http://www.mvnrepository.com/art ... /hibernate/3.2.6.ga

    复制文章中的:

    <dependency>

        <groupId>org.hibernate</groupId>

        <artifactId>hibernate</artifactId>

        <version>3.2.6.ga</version>

    </dependency>

    到pom.xml文件中即可。

    是否还需要找到hibernate依赖的pom?

    不需要,hibernate也会有pom,maven会通过它的pom自动找到它依赖的类库。

    3.2.2.2. 继承关系

    继承其他pom.xml配置的内容。

    maven提供了一个类似java.lang.Object的顶级父pom.xml文件。

    可以通过下面命令查看当前pom.xml受到超pom.xml文件的影响:

    mvn help:effective-pom

     

    创建一个各种项目可复用的pom.xml文件:http://easymorse.googlecode.com/svn/trunk/pom/pom.xml

    部署要复用的pom.xml文件:

     mvn install

     

    在自己的pom文件中继承上述pom:

     

            <parent>

                    <groupId>com.easymorse</groupId>

                    <artifactId>pom</artifactId>

                    <version>0.1</version>

            </parent>

     

    3.2.2.3. 聚合关系

     

    用于将多个maven项目聚合为一个大的项目。

    比如目录结构如下:

    .

    |-- pom.xml

    |-- module-a

        `-- pom.xml

    |-- module-b

        `-- pom.xml

    |-- module-c

        `-- pom.xml

    |-- foo-all

        `-- pom.xml

     

    那么总的pom.xml文件类似:

    ...

        <modules>

            <module>module-a</module>

            <module>module-b</module>

            <module>module-c</module>

            <module>foo-all</module>

        </modules>

    </project>

     

    3.2.3. 其他配置

    maven的属性,是值的占位符,类似EL,类似ant的属性,比如${X},可用于pom文件任何赋值的位置。

    有以下分类:

    • env.X:操作系统环境变量,比如${env.PATH}
    • project.x:pom文件中的属性,比如:<project><version>1.0</version></project>,引用方式:${project.version}
    • settings.x:settings.xml文件中的属性,比如:<settings><offline>false</offline></settings>,引用方式:${settings.offline}
    • Java System Properties:java.lang.System.getProperties()中的属性,比如java.home,引用方式:${java.home}
    • 自定义:在pom文件中可 以:<properties><installDir>c:/apps/cargo-installs< /installDir></properties>,引用方式:${installDir}

     

    3.3. 其他

    3.3.1. 设置离线

    在.m2目录下创建settings.xml文件(如果没有的话)

    <settings 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/settings-1.0.0.xsd">

            <offline>true</offline>

    </settings>

    3.3.2. 安装第三方包

    经常有第三方包,因为一些原因,在网上repository上没有,需要自己动手安装。

    比如sun某些版本的jar文件,比如oracle的驱动。

    已oracle驱动程序为例,比如驱动路径为c:/driver/ojdbc14.jar,是10.2.0.3.0版本

     

    在该网址能够查到:http://www.mvnrepository.com/artifact/com.oracle/ojdbc14 

    artifactId和groupId。 

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=c:/driver/ojdbc14.jar

     

     

    这样就可以在pom中依赖引用了:

    <dependency>

        <groupId>com.oracle</groupId>

        <artifactId>ojdbc14</artifactId>

        <version>10.2.0.3.0</version>

    </dependency>

     

     

     

    3.3.3. 部署到tomcat 

    tomcat配置有管理权限的用户:conf omcat-users.xml

     

    <?xml version='1.0' encoding='utf-8'?>

    <tomcat-users>

      <role rolename="manager"/>

      <user username="marshal" password="password" roles="manager"/>

    </tomcat-users>

     

     

    在pom文件的tomcat插件中添加: 

                            <plugin>

                                    <groupId>org.codehaus.mojo</groupId>

                                    <artifactId>tomcat-maven-plugin</artifactId>

                                    <configuration>

                                            <url>http://localhost:8080/manager</url>

                                            <server>myserver</server>

                                            <path>/mycontext</path>

                                    </configuration>

                            </plugin>

     

     

    在.m2/settings.xml文件中增加:

    <settings 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/settings-1.0.0.xsd">

            <servers>

                    <server>

                            <id>myserver</id>

                            <username>marshal</username>

                            <password>password</password>

                    </server>

            </servers>

    </settings>

     

     

    运行打包部署,在maven项目目录下:

    mvn tomcat:deploy

     

    然后访问:http://localhost:8080/mycontext/ 即可。

    撤销部署:mvn tomcat:undeploy

  • 相关阅读:
    12.22冲刺总结
    Android远程服务
    短信电话监听
    Android本地服务
    意图
    多线程下载
    异步HTTP请求
    提交数据到服务器
    通过HTTP访问网络资源
    观察者
  • 原文地址:https://www.cnblogs.com/luojinping/p/3304812.html
Copyright © 2020-2023  润新知