安装Maven
以下步骤假定你已经正确安装JDK,并设置JAVA_HOME
- 下载Maven并解压。目前Maven的最新版本是2.2.1,下载并解压到C:\bin\apache-maven-2.2.1 (也可以解压到其他任何目录)
- 把C:\bin\apache-maven-2.2.1\bin加入到你的Path环境变量
- 打开一个命令行窗口,输入mvn -version,如果正确看到输出,则mvn工作正常
- 修改C:\bin\apache-maven-2.2.1\conf\settings.xml,增加localRepository配置,localRepository用于配置Maven本地仓库的路径
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> <localRepository>C:/bin/apache-maven-2.2.1/repo</localRepository>
基本项目管理
接下来我们通过Maven创建一个最简单的Java项目,并模拟编码/编译/测试/打包的整个过程。
创建Java项目
假定我们的项目放在C:\projects,以下的命令均在Windows的命令行窗口执行,^符号是把一个较长的命令拆成多行
cd C:\projects mvn archetype:create ^ -DarchetypeGroupId=org.apache.maven.archetypes ^ -DgroupId=com.company.myapp ^ -DartifactId=myapp
mvn archetype:create调用archetype插件(Plugin)的archetype:create任务(Goal),创建了项目myapp,该项目在C:\projects\myapp文件夹,结构如下
myapp |-- pom.xml `-- src |-- main | `-- java | `-- com | `-- company | `-- app | `-- App.java `-- test `-- java `-- com `-- company `-- app `-- AppTest.java
其中pom.xml即为项目对象模型(POM)文件,包含了Maven用于管理项目的所有信息。本文不对pom.xml的内容做具体说明,后续我们会继续讨论。
创建Eclipse项目文件并导入Eclipse
接下来需要把Maven产生的项目文件导入到Eclipse中,我们先来产生Eclipse项目文件
cd C:\projects\myapp mvn eclipse:eclipse
mvn eclipse:eclipse调用eclipse插件(Plugin)的eclipse:eclipse任务(Goal)创建了Eclipse项目文件,请注意C:\projects\myapp目录下多出来两个文件.classpath和.project。
启动Eclipse,导入项目之前,需要首先在Eclipse中配置M2_REPO变量,因为Maven下载的JAR包都存放在本地仓库文件夹,需要告诉Eclipse如何找到这些文件,方法是
- 选择Window->Preferences菜单
- 在Preferences窗口左导航中选择Java->Build Path->Classpath Variables
- 新增变量M2_REPO,指向C:\bin\apache-maven-2.2.1\repo
导入myapp项目,导入后结果如下
Maven为我们生成了项目骨架,下面增加一点功能,修改com.company.myapp.App类,增加一个getHelloWorld方法
public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } public static String getHelloWorld() { return "Hello World!"; } }
紧接着修改我们的测试用例,覆盖我们新增的代码,编辑com.company.myapp.AppTest类,增加方法testGetHelloMessage
public class AppTest extends TestCase { ... public void testGetHelloMessage() { assertEquals("Hello World!", App.getHelloWorld()); } }
到目前为止,我们使用Maven创建了项目,产生了Eclipse项目文件,并把项目导入到Eclipse中。此外,我们还为程序增加了一点小功能。
接下来我们体验一下Maven的威力,代码写好了,首先我们编译一下
cd C:\projects\myapp mvn compile
mvn compile是运行生命周期(Lifecycle)中的compile阶段(Phase),该阶段的作用是编译程序代码。
编译成功,接着运行我们的测试用例
mvn test
mvn compile是运行生命周期(Lifecycle)中的test阶段(Phase),该阶段的作用是运行测试用例。除屏幕输出外,还可以在C:\projects\myapp\target\surefire-reports下查看测试结果报告。
OK,测试也没有问题,最后打包交付
mvn package
mvn package调用package阶段(Phase),在C:\projects\myapp\target产生文件myapp-1.0-SNAPSHOT.jar即为编译后的JAR包。
以上的compile->test->package,是Java项目生命周期的三个阶段,其中任何后续阶段的执行会自动执行前置的阶段。例如,我们可以不执行compile/test,直接执行mvn package,则compile/test会自动被执行。
小结
- 使用mvn archetype:create创建Maven项目
- 使用mvn eclipse:eclipse产生Eclipse项目文件
- 需要配置Eclipse的M2_REPO变量,指向Maven的本地仓库路径
- Maven的compile/test/package阶段使用