Maven

Maven学习总结

一、Maven的基本概念与安装  

  http://www.cnblogs.com/xdp-gacl/p/3498271.html

  Maven(翻译为"专家","内行")是跨平台的项目管理工具

  主要服务于基于Java平台的项目构建,依赖管理和项目信息管理

  项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程

  Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系

  Maven约定了标准的目录结构
  

  

  
  

二、Maven构建过程

  http://www.cnblogs.com/xdp-gacl/p/4051690.html

  • 编译:项目根目录执行"mvn compile"命令编译项目的java类,编译成功会出现一个target文件夹,里面有.class文件
  • 清理项目的命令是:"mvn clean",会删除编译时生成的target文件夹

  • 项目根目录执行"mvn test"命令测试项目
  • 打包项目的命令是:"mvn package"  打包成功后生成的jar文件在target文件夹中
  • 项目根目录执行"mvn install"部署项目命令,会把最后生成的jar包发布到Maven存放jar包的仓库中,别的项目如果依赖到这个jar包也可以通过在pom.xml中配置使用了

    使用"mvn install"命令,就把maven构建项目的【清理】→【编译】→【测试】→【打包】的这几个过程都做了,同时将打包好的jar包发布到本地的Maven仓库中,所以maven最常用的命令还是"mvn install",这个命令能够做的事情最多

  maven的编译,清理,测试,打包,部署命令是可以几个命令同时组合起来使用的

  • 先清理再编译:"mvn clean compile"
  • mvn clean test
  • mvn clean package
  • mvn clean install


三、使用Maven命令创建项目

  http://www.cnblogs.com/xdp-gacl/p/4240930.html

  • 创建Java项目
    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    会在当前目录下创建项目,在D盘根目录执行以上命令就会生成一个名为myapp的Java项目


    mvn clean install部署后会在target以及本地仓库中生成一个jar包




    运行jar包:java -cp targetmyapp-1.0-SNAPSHOT.jar com.mycompany.app.App






  • 创建JavaWeb项目

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-WebApp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

    D盘执行以上命令会生成一个名为my-WebApp的Javaweb项目,mvn package打包项目,会在target下生成my-WebApp.war文件,把war文件放到tomcat中就可以运行了,除了使用Tomcat服务器运行Web项目之外,我们还可以在Web项目中集成Jetty发布运行,首先在pom.xml文件中配置Jetty插件,然后启动Jetty:mvn jetty:run

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4   <groupId>com.mycompany.app</groupId>
     5   <artifactId>my-WebApp</artifactId>
     6   <packaging>war</packaging>
     7   <version>1.0-SNAPSHOT</version>
     8   <name>my-WebApp Maven Webapp</name>
     9   <url>http://maven.apache.org</url>
    10   <dependencies>
    11     <dependency>
    12       <groupId>junit</groupId>
    13       <artifactId>junit</artifactId>
    14       <version>3.8.1</version>
    15       <scope>test</scope>
    16     </dependency>
    17   </dependencies>
    18   <build>
    19     <finalName>my-WebApp</finalName>
    20     <pluginManagement>
    21          <!--配置Jetty-->
    22            <plugins>
    23              <plugin>
    24               <groupId>org.mortbay.jetty</groupId>   
    25               <artifactId>maven-jetty-plugin</artifactId>
    26              </plugin>
    27            </plugins>
    28      </pluginManagement>
    29   </build>
    30 </project>
    pom.xml
    
    
  • 创建命令说明

    mvn archetype:create或者mvn archetype:generate  固定写法

    -DgroupId         组织标识(包名)

    -DartifactId        项目名称

    -DarchetypeArtifactId     指定ArchetypeId,maven-archetype-quickstart,创建一个Java Project;maven-archetype-webapp,创建一个Web Project

    -DinteractiveMode     是否使用交互模式

      archetype是mvn内置的一个插件,create任务可以创建一个java项目骨架,DgroupId是软件包的名称,DartifactId是项目名,DarchetypeArtifactId是可用的mvn项目骨架,目前可以使用的骨架有:

    • maven-archetype-archetype
    • maven-archetype-j2ee-simple
    • maven-archetype-mojo
    • maven-archetype-portlet
    • maven-archetype-profiles (currently under development)
    • maven-archetype-quickstart
    • maven-archetype-simple (currently under development)
    • maven-archetype-site
    • maven-archetype-site-simple
    • maven-archetype-webapp

      每一个骨架都会建相应的目录结构和一些通用文件,最常用的是maven-archetype-quickstartmaven-archetype-webapp骨架。maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project

  • pom.xml文件的节点元素说明

      <project>       pom文件的顶级节点
      <modelVersion>     object model版本,对Maven2和Maven3来说,只能是4.0.0 
      <groupId>       项目创建组织的标识符,一般是域名的倒写
      <artifactId>      定义了项目在所属组织的标识符下的唯一标识,一个组织下可以有多个项目
      <version>        当前项目的版本,SNAPSHOT,表示是快照版本,在开发中

      <packaging>      打包的方式,有jar、war、ear等
      <name>        项目的名称
      <url>          项目的地址

      <properties>    属性配置,比如:<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <dependencies>     构建项目依赖的jar

      其中由groupIdartifactIdversion唯一的确定了一个项目坐标

原文地址:https://www.cnblogs.com/gucl/p/8135586.html