首页 > 代码库 > Maven(二):入门项目

Maven(二):入门项目

   上篇文章讲解了Maven的安装与配置,并且演示了maven如何与Eclipse集成,本篇文章则就开始实战了,以一个简单的例子来说明Maven项目的建立与使用。

一、编写pom

  要说Maven项目的核心是什么,就不得不说POM了。POMProject Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。每个Maven项目下都要有一个POM文件,现在来看一个最简单的POM文件。

<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

 

<groupId>com.sld</groupId>

<artifactId>testMaven</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

 

</project>


  代码的第一行是XML头,指定了该XML文档的版本和编码方式。下面就是重头戏了--Project元素,这个是所有pom.xml的根元素。我就分别来说说根元素下几个重要的子元素。

  第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2Maven3来说,它只能是4.0.0。接下来就是groupId、artifactId和version这三个子元素了,他们共同定义了一个项目基本的坐标,在Maven的世界里,任何的jarpom或者war都是以基于这些基本的坐标进行区分的。其中groupId定义了项目所属的组,这个组往往和项目所在的组织或公司存在关联,例如下例中的com.sld,这就是以我个人名义建立的一个项目。artifactId定义了当前Maven项目在组中唯一的ID。而version显而易见,指定了当前项目的当前版本。最后packaging则是该项目的类型,说明它是web项目、java项目或者ear项目。

  上面这个简单的pom文件中没有项目依赖关系,如果我们需要声明的话,使用dependency即可。如下例:通过dependency来声明项目之间的依赖关系。

<dependencies>

    <dependency>

        <groupId>org.hibernate</groupId>

        <artifactId>hibernate-core</artifactId>

        <version>${hibernate.version}</version>

   </dependency>


   <dependency>

       <groupId>org.springframework</groupId>

       <artifactId>spring-webmvc</artifactId>

       <version>${spring.version}</version>

   </dependency>

</dependencies>


  读者可以发现,没有任何java代码,我们就可以定义一个Maven项目的pom,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,这就实现了我们常说的解耦。这在很大程度上避免了Java代码和POM代码的相互影响。比如日后需要升级版本时我们只需要修改POM文件,而不需要修改java代码。

 

、编写主代码

  Maven项目建立完成后,我们就需要来编写java代码了,这里需要注意的是主代码和测试代码最大的区别:项目的主代码会被打包到最终的构件中,而测试代码只在运行测试时用到,不会被打包。默认生成Maven项目时,会出现以下几个文件夹:

技术分享

  其中需要我们操作的就是src/main/javasrc/test/java目录,我们遵循maven的约定,在src/main/java目录下创建主代码,Maven会自动搜寻该目录找到主代码;在src/test/java目录下创建测试代码。这样在打包的时候,Maven会自动帮我们打包主代码,而忽略测试代码。

  在目录下建包时,需要注意项目中Java类的包都应该基于项目的groupIdartifactId,这样更加清晰,更加符合逻辑,也方便搜索构件或者Java类。如下图所示:

技术分享

  关于主代码我这里就不再写了,编写完代码后,使用Maven进行编译,在项目的根目录下运行命令maven clean compileclean告诉Maven要清理输出目录target/compile则告诉Maven要编译项目主代码,编译完成后会在target/classes下。


、编写测试代码


  关于测试,我在前面博客中已经有了详细的介绍,这里只贴出pom文件,以供大家了解:

<projectxmlns="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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

 

<groupId>com.sld</groupId>

<artifactId>testMaven</artifactId>

<version>0.0.1-SNAPSHOT</version>

<packaging>jar</packaging>

 

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

 

<dependencies>

<dependency>

<groupId>com.cyrusinnovation</groupId>

<artifactId>mockito-groovy-support</artifactId>

<version>1.2</version>

</dependency>

 

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.11</version>

</dependency>

 

</dependencies>

</project>


  在这里我们使用的测试工具是JunitMockito,所以只需要在pom文件中声明对这两个jar包的依赖即可。


四、打包和运行


  将项目进行编译、测试之后,下一个重要步骤就是打包(package)。在上面pom文件中,我们指定了打包类型jarMaven默认使用的打包类型也是jar),暂时先简单地执行命令mvncleaninstall进行打包。关于Maven的最重要的命令,我们稍后再说。


  至此,Maven项目流程我们大致走了一遍,侧重的只是Maven项目而非Java代码本身,介绍了POMMaven项目结构以及如何编译、测试和打包等。你明白了些吗?

 

 

 

 

Maven(二):入门项目