maven的第一个入门实例

发表时间:2017-07-18 18:52:57 浏览量( 30 ) 留言数( 0 )

学习目标:

1、了解maven的项目结构

2、掌握maven建立项目,并能正常编译

3、掌握使用eclipse的maven插件编译项目


学习过程:

一、下面我们使用maven管理我们的第一个项目

1、maven的项目的目录结构,maven有一套标准的目录结构,虽然可以修改,但是一般建议大家遵循默认的目录结构就可以了,这样利于大家阅读和交流,有几个默认的目录结构是:

src

  -main

      –bin 脚本库

      –java java源代码文件

      –resources 资源库,会自动复制到classes目录里

      –filters 资源过滤文件

      –assembly 组件的描述配置(如何打包)

      –config 配置文件

      –webapp web应用的目录。WEB-INF、css、js等

  -test

      –java 单元测试java源代码文件

      –resources 测试需要用的资源库

      –filters 测试资源过滤库

  -site Site(一些文档)

target 所有内容都是maven构建的时候生成的,存放项目构建后的文件和目录,jar包、war包、编译的class文件等

二、下面我们先不使用IDE工具,自己在目录上面手动的自己建立这些目录结构

1、在D:盘中心将一个helloworld目录,然后在这个目录下面建立src/main/java和src/test/java目录结构和一个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.javadayup</groupId>
  <artifactId>stumaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>stumaven</name>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

其中modelVersion在maven3.X版本中都是4.0.0。groupId一般是项目的包路径,而artifactId一般是项目名称,version就是版本的意思,name是可选的,一般就是项目的名称标识而已。

2、进入src/main/java目录,新建一个java源码文件HelloWorld.java,输入以下内容。

public class HelloWorld {

	public String sayHello() {
		return "Hello World Maven!";
	}

}

3、进入src/test/java目录,新建com/javaand/mvn包结构,新建一个测试类HelloWorldTest.java,输入以下内容:

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

import com.javaand.mvn.HelloWorld;

public class HelloWorldTest
{
    @Test
    public void testSayHello()
    {
        HelloWorld helloWorld = new HelloWorld();

        String result = helloWorld.sayHello();

        assertEquals( "Hello World Maven!", result );
    }
}

4、修改pom.xml文件,为项目添加对JUit的包依赖。代码如下:

<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.javadayup</groupId>
	<artifactId>stumaven</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>
	<name>stumaven</name>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

</project>

包依赖是maven一个非常有特色的一个功能。使用包依赖可以在编译或者运行项目的时候才从组件仓库中导入相关的包,与我们之前每一次导包都是把相关的jar包复制到项目的lib目录中不同,maven通过配置依赖就会自动的从仓库中获得这个组件。

仓库是在目录的~/.m2/repository中,如果在个人电脑中没有这个组件,那么maven会自动从中心仓库中自动下载,这种自动化下载也免我们每次一缺少包的时候都去网上搜索下载。

那么如何可以确定使用哪一个组件呢?maven为每一个组件定义了“坐标”,我们只需要定义groupId,artifactId和version的信息就可以唯一的确认组件了。

在定义包依赖时,还有一个属性scope,这个是指这个组件的范围,其选值如下:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。 

  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。 

  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。 

  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。 

  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。 

4、使用命令行模式进入helloworld目录,输入以下命令测试这个项目mvn clean test。运行的结果可能会报错,因为Maven默认使用java版本不是1.5,而JUit4需要使用1.5以上的版本,所以我们还需要修改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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.javaand.mvn</groupId>
	<artifactId>helloworld</artifactId>
	<version>1.0-SNAPSHOT</version>
	<name>Hello World Project</name>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.7</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
  <build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
			</configuration>
		</plugin>
	</plugins>
</build>
</project>

再次在dos目录中运行mvn clean test命令

attcontent/f9f2b3fd-1b2e-4df3-b825-c66383353907.png

最后可以看到

attcontent/2721f9e2-d0eb-4b26-89d4-283ffe8599e2.png

二、使用Eclipse新建一个maven的导入项目

1、使用文件写代码确实是很痛苦的,所有我们可以使用IDE,这里我们当然推荐大家使用Eclipse。打开Eclipse,点击File》import。选择maven project

attcontent/d56a4859-7879-4e3a-a189-302f361bef14.png

2、选择我们刚才建立的项目

attcontent/2bd88b22-923d-4771-9e14-bd238fde36ce.png

3、点击finish就可以了

右键选择这个项目,选择Run as》Maven test就可以测试这个项目了。

三、使用Eclipse建立一个maven的普通项目。

每一次都要手动的建立这些标准的目录也是挺烦人的,我们可以使用Eclipse帮助我们建立一个标准的Maven项目,archetypes插件可以帮助我们建立项目的模板,比如普通的java项目或者标准的web项目都可以,Eclipse已经集成了这个插件,所以我们可以不必使用命令行模式进行开发,使用Eclipse可视化开发就行了。

1、点击新建项目,然后选择maven project

attcontent/6a7e17aa-a010-4fb1-837d-221a01b679a6.png

2、直接点击下一步就可以了

attcontent/e41de49f-5c27-443c-afee-e0c2d2cbe18a.png

3、选择maven-archetype-quickstart,quickstart是一个最简单的maven项目模板

attcontent/87572d91-81f7-4f47-852d-3cf64e989cc2.png

4、输入信息,每一个项目都需要一个坐标

attcontent/fa2c403c-1cec-4859-b05a-f8c8126a5927.png

这样就可以建立一个项目了,默认就已经帮助我们建立了一个java文件和一个测试文件,你可以直接选中项目点击运行maven test就可以了。