Maven入门

1.Maven的基本概念

  Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建依赖管理项目信息管理。

1.1.项目构建

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

理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

1.2.依赖管理

  依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

1.3.使用Maven的好处

  Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

  Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

  只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情

  使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

2.Maven的简单使用

2.1 Maven项目的目录约定

MavenProjectRoot(项目根目录)
|----src
|   |----main
|   |   |----java ——存放项目的.java文件
|   |   |----resources ——存放项目资源文件,如spring, hibernate配置文件
|   |----test
|   |   |----java ——存放所有测试.java文件,如JUnit测试类
|   |   |----resources ——存放项目资源文件,如spring, hibernate配置文件
|----target ——项目输出位置
|----pom.xml ----用于标识该项目是一个Maven项目

2.2 Maven pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<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">
 

    <!-- 所有的Maven项目都必须配置这四个配置项 -->

    <!-- 声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变,虽然如此,但它仍然是必不可少的,
    这是为了当Maven引入了新的特性或者其他模型变更的时候,确保稳定性。 --> 
    <modelVersion> 4.0.0 </modelVersion> 
 
    <!-- 项目的全球唯一标识符,通常使用全限定的包名区分该项目和其他项目。并且构建时生成的路径也是由此生成, 
    如com.mycompany.app生成的相对路径为:/com/mycompany/app --> 
    <!-- groupId指的是项目名的项目组,默认就是包名 -->
    <groupId>com.meituan.service.movie</groupId>
 
    <!-- 构件的标识符,它和group ID一起唯一标识一个构件。换句话说,你不能有两个不同的项目拥有同样的artifact ID和groupID;
    在某个特定的group ID下,artifact ID也必须是唯一的。构件         是项目产生的或使用的一个东西,Maven为项目产生的构件包括:JARs,源码,二进制发布和WARs等。 --> 
    <!-- artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名" -->
    <artifactId>supply</artifactId>

    <!-- 项目当前版本,格式为:主版本.次版本.增量版本-限定版本号 -->
    <!--version指的是版本,这里使用的是Maven的快照版本-->
    <version>SNAPSHOT-0.0.1</version>
 

 
    <!-- 其它项配置 -->
 
    <!-- 项目的名称, Maven产生的文档用 --> 
    <name> banseon-maven </name> 

    <!-- 项目主页的URL, Maven产生的文档用 --> 
    <url> http://www.baidu.com/banseon </url> 

    <!-- 项目的详细描述, Maven 产生的文档用。 当这个元素能够用HTML格式描述时(例如,CDATA中的文本会被解析器忽略,就可以包含HTML标签), 
    不鼓励使用纯文本描述。如果你需要修改产生的web站点的索引页面,你应该修改你自己的索引页文件,而不是调整这里的文档。 --> 
    <description> A maven project to study maven. </description> 
 
    <!-- 项目产生的构件类型,例如jar、war、ear、pom。插件可以创建他们自己的构件类型,所以前面列的不是全部构件类型 --> 
    <packaging> jar </packaging>
 
</project>

3.创建Maven项目

3.1 IDEA下创建Maven项目的目录结构

编写好简单的测试类:

3.2 使用Maven编译、清理、测试、打包项目

3.2.1 使用Maven编译项目,编译项目的命令是:"mvn compile"

进入MavenTest项目根目录执行"mvn compile"命令编译项目的java类,

编译成功之后,可以看到项目的根目录下多了一个【target】文件夹,这个文件夹就是编译成功之后Maven帮我们生成的文件夹,

打开【target】文件夹,可以看到里面有一个【classes】文件夹,【classes】文件夹中存放的就是Maven我们编译好的java类,这就是使用Maven自动编译项目的过程。

3.2.2 使用Maven清理项目,清理项目的命令是:"mvn clean"

进入MavenTest项目根目录执行"mvn clean"命令清理项目,清理项目的过程就是把执行"mvn compile"命令编译项目时生成的target文件夹删掉

3.2.3 使用Maven测试项目,测试项目的命令是:"mvn test"

进入MavenTest项目根目录执行"mvn test"命令测试项目,测试成功之后,可以看到MavenTest项目的根目录下多了一个【target】文件夹,这个文件夹就是测试成功之后Maven帮我们生成的文件夹

打开【target】文件夹,可以看到里面有一个【classes】和【test-classes】文件夹,也就是说,我们执行执行"mvn test"命令测试项目时,Maven先帮我们编译项目,然后再执行测试代码。

3.2.4 使用Maven打包项目,打包项目的命令是:"mvn package"

进入MavenTest项目根目录执行"mvn package"命令测试项目

打包成功之后,可以看到MavenTest项目的根目录下的【target】文件夹中多了一个maven.test-1.0-SNAPSHOT.jar,这个maven.test-1.0-SNAPSHOT.jar就是打包成功之后Maven帮我们生成的jar文件

3.2.5 使用Maven部署项目,部署项目的命令是:"mvn install"

进入MavenTest项目根目录执行"mvn install"命令测试项目

安装成功之后,首先会在MavenTest项目的根目录下生成【target】文件夹,打开【target】文件夹,可以看到里面会有maven.test-1.0-SNAPSHOT.jar,这个maven.test-1.0-SNAPSHOT.jar就是安装成功之后Maven帮我们生成的jar文件

除此之外,在我们存放Maven下载下来的jar包的仓库也会有一个maven.test-1.0-SNAPSHOT.jar,所以Maven安装项目的过程,实际上就是把项目进行【清理】→【编译】→【测试】→【打包】,再把打包好的jar放到我们指定的存放jar包的Maven仓库中

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

3.3 组合使用Maven的命令

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

先清理再编译:"mvn clean compile",还有的就是"mvn clean test","mvn clean package","mvn clean install",这些组合命令都比较常用。

3.4 在别的项目中使用通过Maven安装生成的项目的jar包

我们使用mvn install命令将MavenTest这个项目打包成了maven.test-1.0-SNAPSHOT.jar包并且发布到本地的maven仓库/Users/hla/.m2/repository/com/meituan/movie/service/maven.test/1.0-SNAPSHOT/maven.test-1.0-SNAPSHOT.jar中,那么如何在别的项目中使用maven.test-1.0-SNAPSHOT.jar

<?xml version="1.0" encoding="UTF-8"?>
<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.meituan.movie.service</groupId>
    <artifactId>maven.test2</artifactId>
    <version>1.0-SNAPSHOT</version>


    <!--添加依赖的jar包-->
    <dependencies>
        <!--项目要使用到junit的jar包,所以在这里添加junit的jar包的依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>

        <!--项目要使用到maven.test的jar包,所以在这里添加maven.test的jar包的依赖-->
        <dependency>
            <groupId>com.meituan.movie.service</groupId>
            <artifactId>maven.test</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>

</project>

3.5 使用命令生成Maven项目

1.使用mvn archetype:generate命令,如下所示:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=myapp 
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

2.使用mvn archetype:create命令,如下所示: 

mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=myapp 
-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

 

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-quickstart和maven-archetype-webapp骨架。
maven-archetype-quickstart骨架是用来创建一个Java Project,而maven-archetype-webapp骨架则是用来创建一个JavaWeb Project。

 

 

参考来源:

Maven学习总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值