使用Maven构建Java工程(一)

2014-11-24 03:00:29 · 作者: · 浏览: 2

本文采用maven构建一个简单的java工程。

工程描述

你将实现一个显示时间的应用,并采用maven构建它。

准备工作

大约15分钟一个文本编辑器或者IDEJDK 6或更高

如何完成

如同所有的Spring入门教程,你可以选择一步一步的自己实现,也可以跳过基本的设置步骤。最终,你都将得到一份可以正常运行的代码。

如果选择按步实现,继续下一节。

如果选择跳过基本的安装部分,则执行以下命令从github获取代码:

git clone https://github.com/spring-guides/gs-maven.git

切换当前目录到gs-maven/initial,跳到 安装Maven步骤

设置工程

首先,要创建一个java工程。

创建目录结构

在你选定的工程目录下,建立如下子目录结构;例如,在*nix系统中使用mkdir -p src/main/java/hello命令:

└── src
    └── main
        └── java
            └── hello
在src/main/java/hello目录下,可以创建任何java类文件。这里我们创建两个文件作为示例:HelloWorld.java和Greeter.java。两个文件的源代码如下。

package hello;

public class HelloWorld {
    public static void main(String[] args) {
        Greeter greeter = new Greeter();
        System.out.println(greeter.sayHello());
    }
}

package hello;

public class Greeter {
    public String sayHello() {
        return "Hello world!";
    }
}

现在已经创建了一个java工程, 下一步是安装maven

Maven可以从http://maven.apache.org/download.cgi下载。只需要二进制文件,即apache-maven-{version}-bin.zip或者apache-maven-{version}-bin.tar.gz文件。

下载zip文件后,解压,并把其bin目录添加到系统path中。(环境变量)

可以执行以下命令,测试Maven是否安装成功:mvn -v。如果安装成功,则会得到类似的输出:

Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 07:51:28-0600)
Maven home: /usr/share/maven
Java version: 1.7.0_09, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.3", arch: "x86_64", family: "mac"

定义一个简单的Maven build

Maven已经安装成功,现在要创建一个Maven工程定义。Maven工程通过一个称作pom.xml的XML文件定义。这个文件描述了工程的名称、版本、依赖(dependencies)等。

在工程根目录下创建pom.xml文件,并写入以下内容:

  

  
	
   
    4.0.0
   
	
   
    org.springframework.gs
   
	
   
    gs-maven-initial
   
	
   
    0.1.0
   
	
   
    jar
   

  

除了 标签外,这是一个pom.xml文件的最精简配置。它包含了工程配置的下述细节:

。POM 模型版本(通常是4.0.0) 。工程隶属的团体或组织。通常采用逆序的域名。 。工程库文件的名称。(如,工程的jar文件或war文件的名称) 。工程的版本 。工程如何打包。默认为“jar”采用JAR打包,“war”采用WAR打包。

如果需要选择版本方案,Spring推荐使用[semantic versioning](http://semver.org)。现在,我们有了一个最小的可用的Maven工程。

Build Java Code

Maven目前已经准备就绪。你可以采用Maven执行多个构建生命周期目标,包括编译工程代码,创建库包(例如jar包),把库安装到本地Maven依赖仓库。

执行下述命令:

mvn compile

这条命令指示Maven执行compile目标。执行结束后,target/classes 目录下将生成.class文件。

由于我们不太可能想要直接发布或使用.class文件,因此下一步需要执行package目标:

mvn package

package目标将会编译java代码、执行所有的测试、最后将代码打包到target目录下的一个jar文件中。该jar文件的文件名基于工程的 配置。例如,根据前述的pom.xml文件的配置,JAR文件的名称为gs-maven-initial-0.1.0.jar。

如果把 项的值设置从“jar”改为“war”,target目录下将生成一个WAR文件。

Maven也在本地维护了一个依赖仓库以支持快速访问工程依赖(本地仓库通常位于用户根目录中的.m2/repository目录下)。如果你想把你的JAR文件添加到本地仓库中,执行以下install目标:

mvn install

install目标将会编译、测试、打包、并将其复制到本地仓库中。这样其他工程就可以引用它。

下面介绍声明dependencies。

声明dependencies

上述的Hello World示例是自包含的,没有依赖任何其他的库。但是,多数的应用程序都会依赖外部库处理一些公共逻辑和复杂功能。

例如,你想在上面的工程中再添加一个打印当前时间的功能。虽然你可以使用java原生库提供的功能,但是Joda时间库提供了更多有趣的功能。

首先,修改HelloWorld.java文件:

package hello;

import org.joda.time.LocalTime;

public class HelloWorld {
  public static void main(String[] args) {
    LocalTime currentTime = new LocalTime();
    System.out.println("The current local time is: " + currentTime);

    Greeter greeter = new Greeter();
    System.out.println(greeter.sayHello());
  }
}

HelloWorld采用Joda Time的LocalTime类来获取和打印当前时间。

现在执行mvn compile来构建工程,构建就会失败,这是由于你还没有将Joda Time声明为一个依赖。这就需要在pom.xml中添加一下行(在 元素内):

          
    
            
            
             joda-time
             
            
             joda-t