首页 > 其他 > 详细

Maven初探

时间:2015-02-05 18:23:57      阅读:285      评论:0      收藏:0      [点我收藏+]

    本文描述了如何使用maven构建一个简单的Hello World项目

1.编写POM

    Maven项目的核心是pom.xml(Project Object Model),pom定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。先为Hello World项目编写一个简单的pom.xml。

    首先创建一个hello-world的文件夹,在该目录下新建一个名为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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.juvenxu.mvnbook</groupId>
  <artifactId>hello-world</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Hello World Project</name>
  </project>

    modelVersion指定当前pom模型的版本,对于Maven2及Maven3来说,它只能是4.0.0。这段xml代码中最重要的是groupId、artifactId和version三行。这三个元素定义了一个项目基本的坐标。

    groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联。如果你的公司是mycom,有一个项目叫myapp,那么groupId就应该是com.mycom.myapp。

    artifactId定义了当前Maven项目在组中唯一的ID,我们为这个Hello World项目定义artifactId为hello-world。

    version制定了项目当前版本------1.0SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定版本。

    最后一个name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的。

2.编写主代码

    默认情况下,Maven假设项目主代码位于src/main/java目录,于是我们在hello-world文件夹下创建文件com/juvenxu/mvnbook/helloworld/HelloWorld.java,其内容如下:

package com.juvenxu.mvnbook.helloworld;

public class HelloWorld{
	public String sayHello(){
		return "Hello Maven";
	}
	public static void main(String [] args){
		System.out.println(new HelloWorld().sayHello());
	}
}

    代码编写完毕后,使用Maven进行编译,在hello-world文件夹下运行命令mvn clean compile。经过Maven编译,所有输出都在targer目录中。

3.编写测试代码

    Maven项目中默认的主代码目录是src/main/java,对应的,Maven项目中默认的测试代码目录是src/test/java。因此需要创建该目录。

    在编写测试代码之前,首先需要为Hello World项目添加一个JUnit依赖,修改项目的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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.juvenxu.mvnbook</groupId>
  <artifactId>hello-world</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Hello World Project</name>
  <dependencies>
  <dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.7</version>
	<scope>test</scope>
  </dependency>
  </dependencies>
  </project>

    代码中添加了dependencies元素,该元素下可以包含多个dependency元素以声明项目的依赖,这里添加了一个junit依赖。有了这段声明,Maven就能自动从中央仓库下载junit-4.7.jar。scope为依赖范围,值为test表明该依赖只对测试有效。也就是说,在测试代码中使用import junit代码没有问题,如果在主代码中使用import junit代码,则会造成编译错误。如果不声明依赖范围,默认为compile,表示该依赖对主代码和测试代码都有效。

    配置了测试依赖,下面在src/test/java目录下创建测试类:

package com.juvenxu.mvnbook.helloworld;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class HelloWorldTest{
	@Test
	public void testSayHello(){
		HelloWorld helloWorld = new HelloWorld();
		String result = helloWorld.sayHello();
		assertEquals("Hello Maven", result);
	}
}

    编写完代码,使用mvn clean test命令执行测试,检查其返回值是否正确。

4.打包

    在编译、测试之后,下一个重要步骤就是打包(package)。Hello World的pom中没有指定打包类型,默认的打包类型为jar。执行命令mvn clean package进行打包,在项目的target目录中将会生成一个名为hello-world-1.0-SNAPSHOT.jar的文件。至此,可以复制这个jar文件到其它项目的classpath中从而使用HelloWorld类。


5.依赖范围

作用域 编译时有效 测试时有效 运行时有效 实例
compile spring-core.jar
test     junit.jar
runtime   mysql-connector-java.jar
provided   servlet-api.jar
system   JDK的rt.jar


Maven初探

原文:http://blog.csdn.net/huhui_cs/article/details/43530595

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!