使用Maven进行项目管理 2 - 用Maven管理最简单的Java项目

使用Maven进行项目管理 1 - 基本概念中,我们讨论了Maven的基本概念。本文首先简单介绍如何在Windows下安装Maven,然后从一个最简单的Java项目入手,说明如何使用Maven进行最基本的项目管理。

安装Maven

以下步骤假定你已经正确安装JDK,并设置JAVA_HOME

  1. 下载Maven并解压。目前Maven的最新版本是2.2.1,下载并解压到C:\bin\apache-maven-2.2.1 (也可以解压到其他任何目录)
  2. 把C:\bin\apache-maven-2.2.1\bin加入到你的Path环境变量
  3. 打开一个命令行窗口,输入mvn -version,如果正确看到输出,则mvn工作正常
  4. 修改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阶段使用

猜你喜欢

转载自lincan.iteye.com/blog/599197
今日推荐