`
jackiehff
  • 浏览: 6090 次
社区版块
存档分类
最新评论

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目标。



分享到:
评论

相关推荐

    Maven 使用入门.pdf

    Maven 使用入门.pdf

    maven 使用入门第三章

    maven 使用入门第三章,只有第三章技术文档资料。

    Maven3入门

    Maven3入门

    maven使用入门

    maven入门教程,maven是一个有用的构建工具,把源代码构建成可发布构件的工具,值得一学。

    Maven快速入门

    Maven快速入门,管理源码,版本控制,

    Maven+SpringMVC的入门级HelloWorld实例

    Maven+SpringMVC的入门级HelloWorld实例,简单了解Maven和SpringMVC整合

    maven入门到精通

    maven入门到精通 用 Maven 做项目管理 在 Java世界中我们很多的开发人员选择用 Ant来构建项目,一个 build.xml能够完成编译、测试、打包、部署等很多任务,但我们也碰到了很多的问题,如 jar文件管理混乱,各个...

    maven的入门使用

    maven入门使用 maven创建web项目 maven生成eclipse项目 maven+jetty的使用 jetty在eclipse的配置和使用

    maven + springmvc 入门实例

    maven + springmvc 入门实例,安装好maven之后导入myeclipse即可运行。maven安装方法请自行百度

    maven-javaweb入门

    maven的Javaweb入门实例,可用idea打开,也可用eclipse打开

    maven 的入门篇

    写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法。 这个入门篇分上下两篇。本文着重动手,用 maven 来构建运行 hellow world 程序,体会一下不用...

    超详细Maven快速入门到精通.txt打包整理.zip

    超详细Maven快速入门到精通.txt打包整理.zip

    maven基础入门教程

    maven 入门教程PDF,包括maven介绍,配置,项目创建,eclipse创建maven项目等

    maven从入门到实战

    本文首先针对maven3.3.3 的版本构建普通Java 应用和Java Web 应用进行讲解。然后针对公司私有maven 库的情况下,如何安装自有资源及在maven 应用中使用...最后针对一个具体项目应该按什么顺序去使用maven 进行说明。

    HIbernate+Maven入门demo

    最简单的Hibernate入门demo,使用IntelliJ Idea + Maven。

    Maven手把手入门教程

    内容包括:利用Maven构建项目源代码,Maven思维导图;Maven版本使用手册,Maven手把手入门

    Mybatis和Maven简单入门示例

    Mybatis和Maven简单入门示例,其中还包括java集合类的使用

    Maven入门案例

    Maven入门案例,Maven安装,Maven配置,Maven案例,Maven常见命令

    Maven入门到精通

    Maven入门到精通. 做好人不要资源分

Global site tag (gtag.js) - Google Analytics