本文主要介绍在Eclipse如何使用Maven快速建立Spring项目。本文假设读者已经读过《Maven Tutorial - 快速安装、配置及使用》一文,并安装了Eclipse IDE for Java EE Developers


Eclipse Maven Plugin的配置

这个版本的eclipse自带Maven的插件,也自带了Maven本身,实际上,排除网络因素之外,可以什么都不做就直接使用。但是,如果我们想用Eclipse使用我们自己安装的Maven,则需要进行配置。使用原生Maven的好处就是,整台机器共享仓库,而不是eclipse项目共享仓库了。

废话少说,如图所示,定位到Windows - Preferences - Maven - Installations,可以看到目前Maven用的是EMBEDDED版本。

ecplise maven创建spring项目 eclipse maven spring_maven

点击Add,在Installation home处选择Maven的解压目录,Installation name的话随便写,自己喜欢就好。点击Finish。

ecplise maven创建spring项目 eclipse maven spring_ci_02

别忘了选择刚添加的Maven,并且Apply。

ecplise maven创建spring项目 eclipse maven spring_spring_03

最后来到User Settings的配置界面,配置User Settings到Maven解压目录/conf/settings.xml文件,绿线框里的local repository则会自动跳转,同样Apply并OK,就配置完了。

ecplise maven创建spring项目 eclipse maven spring_xml_04


建立Maven Spring项目

这次我们在Eclipse中用Maven来建立一个稍微复杂点的Spring项目TaskScheduler。

步骤一:新建maven project。

ecplise maven创建spring项目 eclipse maven spring_ci_05

步骤二:选择simple project。

ecplise maven创建spring项目 eclipse maven spring_eclipse_06

步骤三:填写基本配置。这里的Artifact的内容可以随便写,是马上要创建的project的相关描述。而Parent的内容必须和我一致,表示我们在别人project的基础上继续开发我们的project,实际上这里这指的是用spring框架来开发我们的project。

ecplise maven创建spring项目 eclipse maven spring_maven_07

步骤四:生成项目以后,打开pom.xml,添加如下配置,分别表示jdk的版本,依赖项和build的方式。

<properties>
    <jave.version>1.8</jave.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

步骤五:按前一篇文章所述,我们用Maven生命周期中的compile命令,依赖包就会被自动下载下来了。右键项目,Run As,Maven build,如果是第一次则会出现第二张图的配置项,Goals里填compile即可。

ecplise maven创建spring项目 eclipse maven spring_ci_08


ecplise maven创建spring项目 eclipse maven spring_maven_09


深入POM

我们上次说到POM是项目对象模型。当Maven执行一个任务的时候,它首先读取pom.xml,获<dependencies>等标签取所需要的配置,根据<build>等标签的要求执行任务。

POM本身就像一个类,可以继承别的POM。在我们pom.xml里,有个<parent>标签,说明我们的pom继承了spring-boot-starter-parent的POM。

既然继承了spring-boot-starter-parent,自然需要spring-boot-starter的依赖。所以我们在<dependency>标签里配置了spring-boot-starter的依赖。

<build>标签里,我们采用Spring Boot Maven plugin来build我们的项目。 Spring Boot Maven plugin有几个优势:

  • 它打包成一个über-jar,不管有多少依赖项,最终只生成一个jar包。
  • 它会自动寻找public static void main()入口函数的位置,让jar包可执行。
  • 它可以管理依赖的版本号。

实现TaskScheduler

现在依赖包已经被下载下来了,如图所示。

ecplise maven创建spring项目 eclipse maven spring_spring_10

现在,我们可以在spring的基础上专心的构建项目了。我们的目标是要实现一个管理任务的Scheduler。而Scheduler本身交给Spring框架来完成,我们只要写个Task类即可。

新建ScheduledTasks类,代码如下,其中使用的annotation都是springframework的annotation。

package com.fangzhenpeng;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {
    public static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime(){
        System.out.println("The time is now " + dateFormat.format(new Date()));
    }
}

新建入口函数类Main,给本项目提供一个调用方法。

package com.fangzhenpeng;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;


@SpringBootApplication
@EnableScheduling
public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SpringApplication.run(Main.class);
    }

}

至此为止,我们的项目就完成了。右键项目,Run As,Java Application。Console中输出的结果如下,每隔5秒输出一次时间,简单粗暴,恭喜大家。

ecplise maven创建spring项目 eclipse maven spring_spring_11

最后,若是大家有兴趣了解Spring的annotation,我将在Spring专题中介绍,敬请期待。