在下载maven并完成maven的配置后,就可以利用maven构建maven项目了。这里以构建一个HelloWord项目为例子(从第一次接触到编程语言,从C语言开始,不知道见过多少个helloword),首先纯手工的构建一个maven项目。在D盘建立一个helloword的文件夹,然后在这个文件夹下建立一个xml文件,名为pom.xml,pom是project object model项目对象模型的缩写,其跟ant的核心文件build.xml一样,是maven的核心文件。在pom.xml文件输入以下内容:
其中project是pom文件的根元素,modelversion定义了pom的版本,对于maven2和maven3来说,只能是4.0.0,groupid定义了一个组,一般是一个组织,例如有一个公司的组叫mycompany,其中一个项目叫myapp,那么groupid就是com.mycompany.myapp.artifactId是构件的id,是这个maven项目在这个group的唯一标识。version定义了这个构件的版本。packaging定义了打包的类型,这里是jar.name元素定义了该maven项目的一个别名,可以更加友好的一个别名,方便信息的交流。
接下来在刚才的helloworld文件夹下定义,定义这样的目录结构src\main\java\com\xiaoqiang\mavenstudy\helloword,在此文件夹下,定义一个HelloWord的java文件,输入下列源代码
package com.xiaoqiang.mavenstudy.helloword;
public class HelloWord
{
public static void sayHelloWord(){
System.out.println("please let us study maven together");
}
public static void main( String[] args )
{
sayHelloWord();
}
}
这里src\main\java是maven项目默认的代码存放地,后面的com\xiaoqiang\mavenstudy\helloword根据pom文件中的groupid和artifactid而来,当然这不是必须的,可以随便,但是为了统一一般会这样做。
项目主代码现在写完了,按理说应该编写测试代码,在这里先不写,后续会有关于相关的内容。
打开命令行,进到D:\helloword下。
build success说明构建成功了,进入到D:\helloword下,会发现多了个target文件夹,在D:\helloword\target\classes\com\xiaoqiang\mavenstudy\helloword下会发现多了个class文件,说明运行成功
也可以将该helloword项目打包,运行 mvn clean package -DskipTests=true即可,读者可自行试验下。其中-DskipTests=true,是在打包过程中跳过测试生命周期。以后会有介绍。
在这里,如果我们每个maven项目都要这么建的话,那岂不是累死,好在maven提供了基于archetype(骨架)来构建maven项目的方式。
把D:\helloword文件夹下的东西都删除掉之后,在命令行中运行mvn archetype:generate命令,以下的内容是从我的maven学习笔记中摘的
l 使用archetype生成项目骨架。Maven3中直接使用mvn archetype:generate
实际上使用了maven-archetype-plugin插件,在Maven2中这样写是不安全的,如果这么写maven2会去查找maven-archetype-plugin的最新版本,而最新版本有可能是不稳定的,例如快照版本,使用maven2应该在命令行输入
mvn maven-archetype-plugins:maven-archetype-plugin:2.0-alpha-5:generate,格式为mvn groupId:artifactId:version:generate
紧接着会出现一串长的输出,提供很多Archetype供选择
选择一个骨架(一般会选择maven-archetype-quickstart或者maven-archetype-webapp这两个骨架)之后会出现
这里的groupid: artifactid :后面的内容是我瞎写的,读者可自行输入想要的内容
总体来说,这两种方式在实际中的用途非常有限,有了m2eclipse这样的插件后,构建maven项目已经非常简单了。下篇博文会介绍如何利用m2eclipse构建maven项目
ps:由于时间仓促,总觉得疏漏了一些东西,如果您在读完博文使用maven过程中遇到了问题,都可以给我留言,我会第一时间回复的。