遵照下面的步骤创建一个简单的maven项目和运行几个maven目标
1.创建项目目录C:/daven
2.创建java源代码的存放目录
C:/daven/src/java
3.创建与包结构相同的目录结构
C:/daven/src/java/smartsoft/daven
4.创建一个简单的类 Box
文件名:
c:/daven/src/java/smartsoft/daven/Box.java
内容:
public class Box { private int length; private int width; public Box(int length, int width) { this.length = length; this.width = width; } public int getArea(){ return length * width; } }5.创建项目对象模型
文件名:
C:/daven/project.xml
内容
<project> <id>daven</id> <currentVersion>1.0</currentVersion> <build> <sourceDirectory> ${basedir}/src/java </sourceDirectory> </build> </project>现在运行一个Maven的内建目标,java:compile.打开命令提示符,切换到项目目录,并且键入:
maven java:compile
你将看到如下的输出:
C:/daven> maven java:compile java:prepare-filesystem: java:compile: [echo] Compiling to C:/daven/target/classes BUILD SUCCESSFUL Total time: 33 seconds注意java:compile目标有一个前提条件,java:prepare-filesystem 目标.
maven的前提条件类似于ant的depends.
现在你查看你的文件系统,你将看到maven为你生成了保存类文件的目录结构.
c:/daven src java smartsoft daven Box.java target classes smartsoft daven Box.class test-classes test-reports使用一下其他的目标,在命令提示符下键入:
maven jar
你将看到如下输入:
C:/daven>maven jar java:prepare-filesystem: java:compile: [echo] Compiling to C:/daven/target/classes java:jar-resources: test:prepare-filesystem: test:test-resources: test:compile: [echo] No test source files to compile test:test: [echo] No tests to run BUILD SUCCESSFUL Total time: 6 seconds注意jar目标有许多的前提目标
java:prepare-filesystem java:compile java:jar-resources test:prepare-filesystem test:test-resources test:compile test:testmaven 还会在target目录中创建一个名为daven-1.0.jar的文件.它的名字来自于
项目对象模型文件中的 Id和currentVersion元素.现在执行 clean目标.
在命令 提示符下键入:
java clean
你又会得到这样的输出:
C:/daven>
maven clean
clean:clean:
[delete] Deleting directory C:/daven/target
BUILD SUCCESSFUL
Total time: 7 seconds
如果你再次检查你的文件系统,你将发祥生成的target目录被删除了.
理解目标
你已经运行了三个目标java:compile,jar.clean.虽然maven中的goal等同于ant中的target, 但是你却不用创建自己的目标,maven已经提供了打多数你需要的目标.到写此文时,maven 已经有312个goal了.(译者注:你可以用maven -g 命令来查看所有的安装插件和目标)
记住maven的目标时组织到插件中的.实际上,在maven的主页上又这样的描述 "像人造卫星般围绕的一个小核心"(原文:"small core that works with a satellite of plug-ins") 大多数maven的功能以插件的形式提供,插件提供了目标名的前缀.例如,java:compile将调用 java插件的compile目标.如果不带任何目标名运行插件,那么将会调用插件的默认目标.例如 maven jar将调用jar插件的默认目标.