引言
创建一个 Maven 版 Hello World。
一、Eclipse 中 Maven 插件的准备工作
除了 JDK 和必须的 Eclipse 之外,还需要在 Eclipse 中设置Maven 相关的信息。这里有最重要的两项 maven 配置:
1.1 Maven Installations
说明:该项设置是指定 Eclipse 需要启动 Maven 程序,Eclipse 有内嵌的 Maven 插件工具,因此有些时候,即便你没有在本地安装 maven ,也依然可以在 Eclipse 完成 Maven 的相关操作。但一般认为内置的 Maven 启动插件不稳定,所以企业中建议指定为自己安装的 Maven。但要注意,当 Eclipse 变换了工作区后,需要重新 设置Maven插件。
1、打开 Window 首选项,设置 Maven Installations:
2、点击 【Apply】按钮,或 【Apply and Close】应用并退出。
1.2 User Settings
说明:此项配置主要是为了指定 conf/settings.xml 的位置,进而可以找到本地仓库的位置。下图路径都是默认配置,建议不要修改,不过也可以根据磁盘大小变换路径。
二、Eclipse 中的Maven 工程
在 Eclipse 中操作 Maven 工程主要为了解决三个问题:
1、创建 Maven 版 Java 工程
2、创建 Maven 版 Web 工程
3、执行 Maven 命令
2.1 创建 Maven Java Project
首先在 Package 视图中新建 Maven Project:
注意:在下图中,必须勾选 "Create a simple project (skip archetype selection)" 复选框,否则将无法生成理想的 Maven 项目结构。
填写必要的 Maven 信息(GAV)然后点击 【Finish】即可完成 Maven 版 Java 工程的创建。
2.2 在 Eclipse 中执行 Maven 命令
在 Eclipse 中执行 Maven 命令非常简单,可以在项目右键(或 pom 文件上 右键)执行 “Run As” :
点击 2 Maven build... 可以填写希望执行的 maven 指令,如:
点击 Run 查看控制台执行结果:
【额外补充】 在前面的文章中,我们已经了解过了 Maven 的声明周期、目标(Goal)、以及命令的书写方式,在 Eclipse 中,实际上也是类似的,在上面的执行计划配置会话框中的 Goal 一栏尤为明显。我们不仅可以在 Goal 中填入 compile 执行 编译目标,还可以执行多组 Maven 命令,如 clean install ,并且,Eclipse 会保存“执行计划”,方便下次使用:
上图的 ${project_loc} 实际上可以在输入框的右下侧 “Variables...” 中找到,代表项目定位,具体这个表达式究竟是 Eclipse 自带的隐含变量还是 Maven 的变量目前我还没搞明白(如果有知道的小伙伴希望文末留言,或者提醒一下查询的关键字如:“Eclipse 变量”)。
2.3 Maven Web Project
创建 web 工程和 java 工程类似,且都需要勾选"Create a simple project (skip archetype selection)" 复选框。
不过在打包方式上, web 工程需要选择 war包:
生成的 web 工程 由于本身目录结构不符合以往动态web 工程的目录结构,所以需要进一步进行转化,但是由于目前在 STS上找不到 Dynamic Web Project 的选项了(只有静态web 工程,目前还不是很了解两者的区别和联系),所以暂时了解到这里。
附录A:Maven 项目的 jdk 版本问题
在创建完 Maven Java Project 之后,可能会遇到这样的问题。刚刚创建的项目中的 JRE System Library 是 JavaSE-1.7 或者 更低。
这个问题可以通过修改项目的 JDK依赖版本来解决:
解决方法一:
首先右键项目,选择Properties 属性,并依次修改 "Java Build Path" 和 "Java Compile"(都比较简单):
解决方法二:
第二种解决方法是一劳永逸的办法——在首选项的Maven User Settings 所指向的User Setting 文件 settings.xml 中配置 JDK 的使用版本。后续即可保持统一的 JDK 版本,一劳永逸:
<profiles><!-- 配置 maven 的 JDK 版本--><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>
</profiles>