Maven 安装 简介

  • Maven 安装

    下载安装包 地址:http://maven.apache.org/download.html

    Windows 安装: 本机jdk必需是1.5或者以上版本

    解压安装包

      目录结构:
      bin   Maven的运行脚本
      boot  Maven自己的类装载器
      conf  该目录下包含了全局行为定制文件setting.xml
      lib   Maven运行时所需的类库
    
  • 配置环境变量

      M2_HOME=安装目录
      在path变量中增加%M2_HOME%\bin
      检查安装是否正确
      Mvn –v
      能看到Maven和JDK的版本号为安装正确
      试运行maven命令
      mvn help:system
      该命令将会下载help插件并运行它,且打印出Java系统属性和环境变量
    
  • Maven名词解释

    1. Project:任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成。
    2. POM:POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。
    3. GroupId:groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。
    4. Artifact:artifact 是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由groupId和 artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则Maven无法找到 (识别)它们。
    5. Dependency:为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。
    6. Plug-in:Maven是由插件组织的,它的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。主要的Maven插件要是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。
    7. Repository:仓库。
  • 配置文件

    $user.home/.m2/repository/setting.xml 为用户范围的配置文件 $M2_HOME/conf/setting.xml 为全局范围的配置文件,修改后将影响本机所有用户的配置 建议:只修改用户级别的配置,既不影响其它用户,也不影响后期升级。

  • 配置介绍

    1. localRepository: 自定义本地库路径,默认在$user.home/.m2中
    2. interactiveMode:
    3. offline:是否每次编译都去查找远程中心库
    4. pluginGroups:插件组,例如org.mortbay.jetty
    5. proxies:通过代理访问外部库
    6. servers:集成认证服务,例如集成Tomcat
    7. mirrors:镜像库,可以指定内部中心库
    8. profiles:个性配置,需要在Activation标签中激活
    9. activeProfiles:表示激活的profile
  • maven仓库

    1. 远程公用仓库 Maven内置了远程公用仓库:http://repo1.maven.org/maven2这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主。
    2. 内部中心仓库 也称私有共享仓库(私服)。一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。Nexus和Artifactory均可搭建仓库服务器。但后者支持LDAP认证,这样就可以将私有仓库的认证集成到公司已经有的LDAP认证服务器。内部中心库又可以连接第三方库,例如Jboss中心库、Spring中心库,以随时获得最新版本的第三方构件。
    3. 本地仓库 Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,通常默认在$user.home/.m2/repository下。 修改本地库位置:在$M2_HOME/conf/setting.xml文件的元素中指定路径,例如:D:/my_repository
  • Maven常用命令

    1. 检测Maven、JDK版本 mvn –v 或者 mvn -version
    2. 获取帮助选项 mvn –h 或者 mvn –help
    3. 显示详细错误信息 mvn –e
    4. 创建Java项目 mvn archetype:create -DgroupId=${groupId} -DartifactId=${artifactId} 示例:mvn archetype:create -DgroupId=com.howsun -DartifactId=myApp-Dversion=0.1
    5. 创建Web项目 mvn archetype:create -DgroupId=${packageName} -DartifactId=${webappName} -DarchetypeArtifactId=maven-archetype-webapp
    6. 创建其它项目(例如SSH、JPA、JSF、Seam…) mvn archetype:generate然后根据提示选择项目骨架、groupid、artifactid、版本号…Maven3已有上百个项目骨架
    7. 转换成Eclipse工程 mvn eclipse:eclipse mvn eclipse:clean //清除Eclipse设置信息 转换成idea项目:mvn idea:ide
    8. 编译 mvn compile
    9. 编译测试代码 mvn test-compile
    10. 产生Site: mvn site
    11. 测试 mvn test //运行测试 mvn test -Dtest=${类名} //单独运行测试类
    12. 清除 mvn clean //将清除原来编译的结果
    13. 打包 mvn packagemvn package –Dmaven.test.skip=true //打包时不执行测试
    14. 发布 mvn install //将项目打包成构件安装到本地仓库 mvn deploy //发布到本地仓库或服务器(例如Tomcat、Jboss)
    15. 手动添加构件到仓库 mvn install:install-file -Dfile=${jar包文件位置} -DgroupId=${groupId} -DartifactId=${artifactId} -Dversion=${版本号} -Dpackaging=jar -DgeneratePom=${是否同时创建pom文件}
    16. 复制依赖构件到相应目录 mvn dependency:copy-dependencies -DoutputDirectory=${目标目录} -DexcludeScope=${scope} -Dsilent=true 示例: mvn dependency:copy-dependencies -DoutputDirectory=WebRoot/WEB-INF/lib -Dsilent=true -DincludeScope=runtime
    17. 显示一个插件的详细信息(configuration, goals等): mvn help:describe -Dplugin=pluginName –Ddetail
  • 工程配置文件 pom.xml

    是Maven项目的核心配置文件,位于每个工程的根目录,指示Maven工作的元数据文件。 节点介绍

    1. :文件的根节点 .
    2. : pom.xml使用的对象模型版本 .
    3. :创建项目的组织或团体的唯一 Id.
    4. :项目的唯一 Id, 可视为项目名 .
    5. :打包类型,一般有JAR,WAR,EAR 等
    6. :产品的版本号 .
    7. :项目的显示名,常用于 Maven 生成的文档。
    8. :组织的站点,常用于 Maven 生成的文档。
    9. :项目描述,常用于 Maven 生成的文档。
    10. :构件依赖:模型继承
    11. :依赖管理
    12. :创建报告
    13. :构建
    14. :引用第三方仓库
    15. :许可
  • Eclipse中使用maven

    1. 安装M2Eclipse插件 Help -> InstallNewSoftware -> Work with -> Add 核心组件:
    2. Name:m2e Location:http://m2eclipse.sonatype.org/sites/m2e
    3. 扩展组件: Name: m2e-extras Location:http://m2eclipse.sonatype.org/sites/m2e-extras

示例

  • 命令行创建java工程

    1. command 窗口执行

      F:\maven>mvn archetype:create -DgroupId=com.ailk.test -DartifactId=hello -DpackageName=com.ailk.test -Dversion=1.0 目录会下生成一个 hello 的文件夹 Hello/src/main/java 是源文件目录 Hello/src/test/java 是测试文件目录 Hello/target 是编译目标文件夹 Hello/pom.xml 是工程的 maven 配置文件

    2. Setting 配置

       <?xml version="1.0" encoding="UTF-8"?>
       <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                 xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
         <localRepository>F:\maven\repo</localRepository>
         <pluginGroups>
         </pluginGroups>
         <proxies>
         </proxies>
         <servers>
         	<server>
                   <id>sphost</id>
                   <username>admin</username>
                   <password>admin123</password>
               </server>
               <server>
                   <id>spsnap</id>
                   <username>admin</username>
                   <password>admin123</password>
               </server>
         </servers>
         <mirrors>
         	<mirror>
                   <id>nexus-public</id>
                   <mirrorOf>public</mirrorOf>
                   <!--url>http://127.0.0.1:8081/nexus/content/groups/mygroup</url-->
                   <url>http://192.168.4.19:8081/nexus/content/groups/spgroup/</url>
               </mirror>
         </mirrors>
         <profiles>
         	<profile>
           <id>nexus</id>
           <repositories>
               <repository>
                   <id>nexus</id>
                   <name>local private nexus</name>
                   <url>http://192.168.4.19:8081/nexus/content/groups/spgroup/</url>
                   <releases>
                       <enabled>true</enabled>
                   </releases>
                   <snapshots>
                       <enabled>true</enabled>
                   </snapshots>
               </repository>
           </repositories>
           <pluginRepositories>
               <pluginRepository>
                   <id>nexus</id>
                   <name>local private nexus</name>
                   <url>http://192.168.4.19:8081/nexus/content/groups/spgroup/</url>
                   <releases>
                       <enabled>true</enabled>
                   </releases>
                   <snapshots>
                       <enabled>true</enabled>
                   </snapshots>
               </pluginRepository>
           </pluginRepositories>
       </profile>
         </profiles>
      		  
         <activeProfiles>
               <activeProfile>nexus</activeProfile>
           </activeProfiles>
       </settings>
      
    3. Pom 配置

       <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.ailk.test</groupId>
         <artifactId>hello</artifactId>
         <version>1.0</version>
         <packaging>jar</packaging>
         <name>hello</name>
         <url>http://maven.apache.org</url>
         <properties>
           <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         </properties>
         <dependencies>
           <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.8.1</version>
             <scope>test</scope>
           </dependency>
         </dependencies>
         <build>
               <pluginManagement>
                   <plugins>
                       <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-compiler-plugin</artifactId>
                           <configuration>
                               <source>1.5</source>
                               <target>1.5</target>
                           </configuration>
                       </plugin>
                   </plugins>
               </pluginManagement>
               <extensions>
                   <extension>
                       <groupId>org.apache.maven.wagon</groupId>
                       <artifactId>wagon-ftp</artifactId>
                       <version>1.0-alpha-6</version>
                   </extension>
               </extensions>
           </build>
           <!-- 配置远程发布到私服,mvn deploy -->
           <distributionManagement>
               <repository>
                   <id>sphost</id>
                   <name>Nexus Release Repository</name>
                   <url>http://192.168.4.19:8081/nexus/content/repositories/sphost/</url>
               </repository>
               <snapshotRepository>
                   <id>spsnap</id>
                   <name>Nexus Snapshot Repository</name>
                   <url>http://192.168.4.19:8081/nexus/content/repositories/spsnap/</url>
               </snapshotRepository>
           </distributionManagement>
       </project>
      
    4. 清除、编译、测试、打包、安装到本机、发布到远程仓库

       F:\maven>cd hello
       F:\maven\hello>mvn clean compile test package install deploy
      
  • Eclipse创建web工程

    1. 创建 maven web 工程

       File/new/project/maven project/next/next
       选择创建maven web项目(maven-archetype-webapp)
       Group id: com.ailk.web.test
       Artiface id: hello
       Version: 0.0.1-SNAPSHOT
       Package: com.ailk.web.test.hello
       创建完按下面目录添加serverlet、struts.xml、web.xml以及一些页面
       src/main/java java源文件
       src/main/resources struts等配置文件目录
       src/main/webapp 页面以及web.xml文件目录
       target 编译和打包目录
      
    2. setting.xml 配置

      添加一个 tomcat server

         <servers>
         	<server>
                   <id>sphost</id>
                   <username>admin</username>
                   <password>admin123</password>
               </server>
               <server>
                   <id>spsnap</id>
                   <username>admin</username>
                   <password>admin123</password>
               </server>
               <server>
                   <id>tomcat</id>
                   <username>admin</username>
                   <password>admin</password>
               </server>
         </servers>
      
    3. pom.xml 配置

      添加编译 tomcat 插件

       <build>
           <finalName>hello</finalName>
           <plugins>
               <plugin>
                   <groupId>org.codehaus.mojo</groupId>
                   <artifactId>tomcat-maven-plugin</artifactId>
                   <version>1.0-beta-1</version>
                   <configuration>
                       <url>http://localhost:8080/manager/text</url>
                       <server>tomcat</server>
                   </configuration>
               </plugin>
           </plugins>
       </build>
      
    4. 清除、编译、测试、打包、安装本地仓库、发布远程仓库、部署 tomcat 服务器

       项目右键/run as/maven build.../goals:clean compile test package install deploy site/run