Maven使用入门(一)

以下是手工创建一个简单的hello-world的Maven项目。

1、创建目录

Maven对于项目目录结构、测试用例命名方式等都有既定的规则,比如项目的构建目录是target目录,源代码目录是src/main/java目录,测试源代码目录是src/main/test目录等。只要遵循这些规则,用户在项目间切换可以免去额外的学习成本,即所谓的约定优于配置(Convention Over Configuration)。

创建hello-world的项目目录以及源代码目录src/main/java和测试源代码目录src/main/test。

2、pom文件

Maven项目的核心是pom.xml。POM(Project Object Model,项目对象模型包含了项目构建的基本信息,用于描述项目如何构建,声明项目依赖等等。

在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.jackie.maven</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven Hello World Project</name>

</project>

配置文件pom.xml相关说明

(1)代码的第一行是XML头,指定了XML文档的版本和编码方式。

(2)project元素是所有pom.xml文件的根元素。

(3)modelVersion指定POM模型的版本,对于Maven 2以及Maven 3来说,只能是4.0.0。

(4)groupId元素定义了项目或者组织的唯一标志,比如你的公司是yihaodian,有一个项目为myapp,那么groupId就应该是com.yihaodian.myapp。而且配置时生成的路径也是由此生成, 如com.jackie.maven生成的相对路径为:/com/jackie/maven。

(5)artifactId元素定义了当前Maven项目在组中的唯一ID,比如这个Hello World项目的artifactId为hello-world。

(6)version元素定义了项目的版本,如Hello World项目的当前版本是1.0-SNAPSHOT。SNAPSHOT意思是快照,说明项目还处在开发阶段,是不稳定的版本。

(7)packaging元素定义打包的方式,如pom, jar, maven-plugin, ejb, war, ear, rar, par等

(8)name元素定义一个更友好的项目名称, 非必须,但Maven推荐使用。

注:(1)groupId、artifactId、version这三个元素定义了任何一个Maven项目最基本的坐标,在Maven的世界,任何的构件(如jar、war等)都是以基于这些基本的坐标进行区分的。

(2)Maven能够让POM最大程度的与实际代码间解耦。

3、编写源代码

package com.jackie.maven.helloworld;
public class HelloWorld {
public String sayHello() {
return "Hello, world";
}
public static void main(String[] args) {
HelloWorld h = new HelloWorld();
System.out.println(h.sayHello());
}
}

注:(1)项目的源代码会被打包到最终的构件(如jar)中,而测试源代码只是用来运行测试,不会被打包。

(2)最佳实践:源代码的包名最好基于项目的groupId和artifactId,这样方便搜索构件或Java类。

使用Maven编译项目,在项目的根目录下运行命令mvn clean compile会得到如下输出:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Hello World Project 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ hello-world ---
[INFO] Deleting /home/jackie/hello-world/target

[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ hello-world ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/jackie/hello-world/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ hello-world ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /home/jackie/hello-world/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.009s
[INFO] Finished at: Sun Nov 18 22:13:04 CST 2012
[INFO] Final Memory: 7M/17M
[INFO] ------------------------------------------------------------------------
注:(1)clean告诉Maven清理输出目录target,compile告诉Maven编译项目源代码。

(2)从输出可以看出Maven先执行clean:clean任务,删除target目录;接着执行resources:resources任务;最后执行compiler:compile任务,编译源码至target/classes目录下。

(3)clean:clean、resources:resources、compiler:compile对应Maven的插件以及插件目标,比如clean:clean是clean插件的clean目标,compiler是compiler插件的compile目标。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值