`
frank-liu
  • 浏览: 1682524 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Maven学习总结:基本概念

阅读更多

简介

    在前一篇文章里已经介绍了怎么安装和配置maven。在安装好之后我们这里来看看怎么通过maven来构建一个工程并详细的了解一下maven的配置文件里各配置项是什么意思。只有理解清楚这些之后我们才能够更好的运用好这个工具。

 

创建一个示例工程

    首先我们尝试创建一个普通的工程。在命令行的情况下,我们输入如下命令:

mvn archetype:generate -DgroupId=com.yunzero -DartifactId=SampleProject -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    系统会显示如下的输出:

    

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.yunzero
[INFO] Parameter: packageName, Value: com.yunzero
[INFO] Parameter: package, Value: com.yunzero
[INFO] Parameter: artifactId, Value: SampleProject
[INFO] Parameter: basedir, Value: /home/frank/programcode/spring
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /home/frank/programcode/spring/SampleProject
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13.278s
[INFO] Finished at: Sun Dec 14 22:32:31 CST 2014
[INFO] Final Memory: 12M/239M
[INFO] ------------------------------------------------------------------------

   这表示一个工程已经建立好了。那么我们前面的这个命令表示什么意思呢?它究竟做了什么?我们又创建了一个什么样的工程呢?我们一点点详细的分析过来。

    先看我们建立的这个工程的结构:

 

    如上图所示,这里表示一个普通的java console工程结构。这是我们用命令行建立的。如果我们考虑用IDE工具来建立工程呢?也可以用类似的方式。我们以eclipse为例。

1. 首先选择新建一个maven project:

 

2.  然后选择Next, 在这里选择工程所在的目录,我们选择默认的位置,如下图:

 3. 选择next之后再继续选择archetype

 

 

 

    这里,也选择默认的maven-archetype-quickstart。然后继续选择Next。如果我们留意的话会发现这个类型的archetypeid也就是我们前面命令行创建工程里指定的。

 

4. 在这一步选择Group Id和Artifact Id:

 

   在这一步,设置的Group Id和artifact Id也就是我们前面命令行里指定的那样。这样,我们就建立了一个简单的maven示例工程了。它的结构如下图:

 

 

     这样,我们通过命令行和IDE两种方式创建了一个示例工程。下面我们针对命令行的参数和pom.xml文件里的一些项进行详细的讨论。

 

参数解释

     我们在最开始创建maven工程的时候指定了archetype参数。然后在后面的参数里又指定了archetypeartifactId。

 

archetype: 指的是我们如果要通过maven创建一个项目工程的话,因为具体针对不同类型的项目它的结构组织不一样,于是maven就提供了一个项目创建的模板。这些模板包含了一些最佳实践,这样可以使得我们在构建项目的时候节约不少实践。比如说,我们需要创建一个普通的console应用,那么它的结构模板必然是一种样式,而如果要构建一个JavaEE的项目,它的结构则不一样。既然我们需要针对不同项目提供不同的模板,于是就有了一个需要怎么来定义和区分它们的问题。这样就有了archetypeArtifactId。

 

archetypeArtifactId: 指的是针对archetype的具体模板。比如说maven-archetype-quickstart表示的是一个创建的普通maven工程。针对不同类型的工程,我们可以在maven的官网上查找对应的类型,也可以在通过IDE创建工程的时候去筛选 。

 

除了上述的两个之外,还要两个比较重要的参数:

 

groupId: 相当于一个对应项目的唯一区分标识。这样说起来还是有点模糊。如果考虑到我们做java项目的时候,要对一些包命名,而且一些包的命名需要具有唯一性。所以这个groupId就是我们创建的项目里最高层包的命名。

 

artifactId: 表示生成的包的名字。当我们将一个项目编译后打包的时候,需要确定一个打包名字并部署到实际测试或者生产环境中,所以在这个地方来确定最后包的名字。

 上述的几个参数就是我们创建maven工程用到的。在前面的参数里,我们还设置了 -DinteractiveMode=false。它表示禁用交互的模式来创建工程。这表示什么意思呢?因为我们在命令行里已经指定了项目的类型和包名以及结构。如果我们想省略这一点的话,可以直接运行:

mvn archetype:generate

  这个时候系统会显示所有的archetype类型,然后交互的提示我们输入对应的archetype,以及groupId和artifact Id。 

 

pom.xml文件 

    我们再来看看通过命令行自动生成的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.yunzero</groupId>
  <artifactId>SampleProject</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>SampleProject</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>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

     前面的groupId和artifactId也定义在这里。<version>部分表示我们常用版本管理中定义的版本号,比如我们常用的RC, alpha, beta, SNAPSHOT。在这里SNAPSHOT表示当前项目处在一个开发的阶段。当一个工程使用SNAPSHOT的依赖时,Maven会每次去获取最新的SNAPSHOT版本。

    还有一个是<packaging>,它表示对于这个工程,需要创建一个JAR包。

    在下面的<properties>里面,我们通常用来定义一些自定义的变量,方便他们重用。比如说我们需要使用某些版本的jar组件,它们有多个组件,但是是同样的版本,我们就可以这样来定义,比如说:

<properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    	<jdk.version>1.6</jdk.version>
		<spring.version>4.1.2.RELEASE</spring.version>
  </properties>
<!-- Spring Core -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${spring.version}</version>
		</dependency>

     这里我们用到了spring-core, spring-context等几个artifact,于是可以直接引用同样的版本信息变量。

    除了这些以外,刚才我们看到很重要的一个就是依赖信息的定义,比如这里我们项目中需要使用到spring-core, spring-context,于是我们就需要在<dependencys>里面定义一个<dependency>的子元素。一个dependency里面指定一个组件的groupId, artifactId和version。可能我们有时候会有点疑惑,这些jar包到哪里去找呢?一般如果我们知道需要使用哪些组件的话,可以去:http://search.maven.org/来搜索需要的组件,在那里可以将需要的maven依赖定义信息直接拷过来。比如下图的spring依赖信息:

     这样,一个基本的maven工程所需要的信息就配置好了。在后续的文章里,我们再讨论maven的生命周期和一些plugin的使用情况。

 

  • 大小: 13.5 KB
  • 大小: 46.8 KB
  • 大小: 54.5 KB
  • 大小: 80.6 KB
  • 大小: 56.6 KB
  • 大小: 32 KB
  • 大小: 100.5 KB
分享到:
评论

相关推荐

    maven-study:Maven概念

    ** Maven 概念详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它通过提供一套标准化的项目对象...在"Maven-study"项目中,你可以深入学习并实践这些概念,进一步提升自己的专业技能。

    maven教案-maven入门学习资料

    Maven 的核心概念是 POM,它是一个 XML 文件,包含了项目的基本信息、构建配置、依赖关系、插件配置等。通过 POM,Maven 可以理解项目的需求并据此执行相应的构建任务。 【 Maven 安装与配置】 - **下载 Maven**:...

    Maven学习记录(一):安装与环境配置

    ** Maven学习记录(一):安装与环境配置 ** Maven是Java开发中不可或缺的构建工具,它通过统一的项目对象模型(Project Object Model,POM)管理项目的构建、报告和依赖关系,极大地简化了项目的构建流程。这篇...

    Maven学习极品,对于初学者而言非常好的资料,极力推荐

    总结,"Maven学习极品"的资料是初学者入门的宝贵资源,它将帮助你理解Maven的核心概念,掌握依赖管理、构建生命周期和插件机制,进而提升开发效率和项目管理水平。通过深入学习和实践,你可以充分利用Maven的强大...

    maven学习总结

    ### Maven学习总结 #### Maven坐标概念 Maven坐标是一个重要的概念,它可以帮助开发者精确地定位一个项目的特定组件,比如JAR包或者WAR包。Maven坐标由三个关键部分组成:`GroupId`、`ArtifactId` 和 `Version`。 ...

    Maven学习笔记.zip

    **Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程。Maven通过使用一个项目对象模型(Project Object Model,POM),XML格式的配置文件,定义了...

    maven学习笔记

    **Maven学习笔记** 在Java开发领域,Maven是一个不可或缺的构建工具,它极大地简化了项目的构建、管理和依赖管理过程...这份"Maven学习笔记"将是你探索Maven世界的宝贵资源,涵盖了从基本概念到高级特性的全方位知识。

    apache-maven-3.3.3

    1. Maven 的核心概念: - POM:POM是Maven项目的基本单位,它包含了项目的信息,如项目名称、版本、开发者信息、依赖关系等,并定义了构建过程。 - 仓库:Maven使用本地仓库存储下载的依赖,同时连接到远程中央...

    Maven视频资料及如何学习心得体会

    在本文中,我们将深入探讨Maven的核心概念、使用方法以及如何通过学习Maven提升开发效率。 **一、Maven简介** Maven,一个由Apache软件基金会开发的项目管理工具,主要功能在于项目构建、依赖管理和项目信息管理。...

    Maven: The Definitive Guide

    6. **Maven安装细节**:学习如何配置用户特定的设置和本地仓库位置,以及如何升级Maven安装版本。 7. **获取Maven帮助**:通过Maven帮助插件获取关于其他插件的描述和帮助信息。 ### Maven的示例项目 在本书的示例...

    maven资料,详细总结文档

    ### Maven详解 #### Maven概述 Maven是一款由Apache组织维护的跨平台项目管理工具,主要用于基于Java...通过对Maven的学习和实践,开发者能够更好地管理项目依赖,规范项目结构,从而提升软件项目的质量和稳定性。

    Maven-example:Maven的例子

    总结来说,Maven-example是一个展示Maven基本用法和配置的实例。通过这个例子,开发者可以学习如何设置POM,管理项目依赖,配置生命周期和插件,以及如何构建一个多模块的Java项目。了解并熟练掌握Maven,对于提升...

    maven学习与命令

    ### Maven 学习与命令详解 #### 一、Maven简介 Maven 是一个 Java 项目的构建工具,它提供了一套完整的项目信息管理和构建方法,能够帮助开发者更方便地进行项目构建、依赖管理以及文档生成等工作。Maven 的核心...

    Maven_Demo:Maven构建工具的工作项目

    Maven_Demo项目是一个学习Maven如何工作的实例,它涵盖了Maven的核心概念和常用操作。通过这个项目,开发者可以了解如何配置POM,管理依赖,以及执行构建生命周期中的各种任务。熟悉并掌握Maven对于提升Java开发效率...

    Maven学习教程分享

    1. 项目对象模型(Project Object Model,POM):Maven通过POM.xml文件来描述项目的基本信息,包括项目依赖、构建过程、插件配置等,它是Maven工作的基础。 2. 仓库:Maven使用本地仓库存储下载的依赖库,同时会...

    maven学习资料

    本学习资料旨在帮助初学者理解 Maven 的基本概念、配置以及在实际开发中的应用。 ### Maven 的核心概念 1. **项目对象模型 (Project Object Model, POM)**:Maven 的核心是 POM,它是 Maven 项目配置的 XML 文件,...

Global site tag (gtag.js) - Google Analytics