当前位置: 首页 > 编程日记 > 正文

在Eclipse中使用Maven构建Spring项目

最新版的Spring需要使用Maven构建,本文讲述怎么在Eclipse构建Maven项目,以配置Spring项目为例。


maven简单介绍

maven是构建工具,也是构建管理工具。ant只是构建工具,因为不支持生成站点功能,只有预处理,编译,打包,测试,部署等功能。

1.  仓库的概念
在基于Maven管理的项目开发中,这个项目自身是不引进第三方jar包的,使用的时候通过pom.xml的依赖机制,从本地仓库或者远程仓库去获取第三方jar包。这个其实是打破了以往的开发习惯,一般我们是在开发项目的时候需要哪个jar包了,立刻google一下,找到相关网址,之后下载,放到我们项目的classpath中。现在是不必强制引用jar,只要通过pom.xml配置,到一定的时刻,比如编译、测试、打包、部署,自然会将依赖的jar放进您预先的位置。Maven仓库是基于简单文件系统存储的,根据咱们之前提到的坐标,可以找到该组件在仓库的位置。

2.  仓库的分类
Maven的仓库分为2种,一个就是本地机器的本地仓库,另一个就是远程的Maven中心仓库。当本地仓库没有您需要的jar包的时候,它会从远程核心中心仓库中下载。为了节省Maven核心仓库的带宽和时间,很多企业都在公司的局域网内搭建了私有的仓库服务器,内部项目先从私服下载东东,没有的时候私服从外网中心仓库下载,内部开发的项目还能上传到私服上供其他项目组使用。

3.  本地仓库明细
本地仓库大家默认是在用户临时文件夹的~/.m2/repository下的settings.xml 。
中心仓库地址:http://search.maven.org/



一.配置Maven

1.安装m2eclipse插件

要用Eclipse构建Maven项目,我们需要先安装meeclipse插件,打开Eclipse菜单栏Help->Eclipse Marketplace


输入“Maven”搜索到插件Maven Integration for Eclipse 并点击insall安装



2.构建Maven简单项目

安装成成之后我们在Eclipse菜单栏中点击File->New->Other


在弹出的对话框中点击Maven文件夹


点击Maven Project,并点击Next,到下一个对话框是默认设置,没什么特别的,继续点击Next到下面这一步

如图所示,选择maven-archetype-quickstart,点击Next


填写好GroupId, ArtfactId,Version等信息,点击Finish。

maven坐标

groupId:项目组织的逆向域名,比如Apache的项目可以org.apache开头

artfactId:表示groupId下单个项目的唯一标识

version:发布项目的版本,版本标识加上SNAPSHOT标记

packing:项目打包后的输出,默认为jar。指为war项目打包生成一个web项目。

groupId,artfactId,version标识项目的唯一性,packing可以缺省


这样我们就创建好一个Maven简单项目,项目结构如图所示


3.构建Maven Web项目

其实构建Maven Web项目的操作跟创建简单Maven项目类似,点击Eclipse菜单File->New->Other->Maven->Maven Project


在选择maven-archetype的界面进行如下操作:


点击Next弹出填写Maven坐标信息的窗口

在弹出的窗口填写好相应的groupId,artifactId,version等信息,点击Finish完成。


构建好的Maven web项目结构如图所示


4.设置Maven项目属性

右击项目,点击Properties->Project Facets

如图所示可以看到项目为web2.3,java1.5,我们也可以改成我们所需要的版本。


也可以打开配置文件web2/.settings/org.eclipse.wst.common.project.facet.core.xml,修改即可:


5.导入Maven项目

切换project explorer

很多时候我们需要project explorer,可以点击菜单上的Window--project explorer


然后在Eclipse project explorer中右击,在弹出框中选择import


选择Existing Maven Projects,点击Next下一步


选择一个已经创建好的Maven项目,并点击Finish,这样导入Maven项目就完成了。


6.获取Spring的Maven坐标信息

Spring官网是http://spring.io/  


我们需要选择Projects,再选择Spring Framework,也就是这个链接 http://projects.spring.io/spring-framework


我们选择3.2.7版本Spring的Maven构建坐标信息复制

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.2.7.RELEASE</version></dependency>
</dependencies>


7.在Maven中配置Spring依赖信息

pom文件简介

pom作为项目对象模型。通过xml表示maven项目,使用pom.xml来实现。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。


打开之前创建的WebApp项目


pom.xml就在项目的根目录下,如上图所示。



双击pom.xml打开如图所示的窗口集合,默认是Overview视图,可以点击下面的页签切换视图。



点击Dependencies切换到依赖窗口,点击Add新建项目依赖。


填写之前选择的Spring的Maven坐标信息,点击OK。


切换到pom.xml页签可以看到新增的项目信息。


点击“保存”按钮


点击Maven Dependencies可以看到Spring项目的依赖的jar包已经引入。


8.最基本的Spring的Helloworld程序

在src/main/java的com.mc.app.WebApp包下


新建Java源文件HelloWorld.java


HelloWorld.java代码:

package com.mc.app.WebApp;public class HelloWorld {private String message;public void setMessage(String message){this.message  = message;}public String getMessage(){return this.message;}public void printMessage(){System.out.println("Your Message : " + message);}
}


修改App.java
导入spring包,已经可以使用自动提示代码功能,说明jar包导入成功


App.java代码:

package com.mc.app.WebApp;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*** Hello world!**/
public class App 
{public static void main( String[] args ){ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");    	 HelloWorld obj = (HelloWorld) context.getBean("helloWorld"); obj.printMessage();}
}


在eclipse工程下建立资源文件夹

需要做的工作是让项目知道这个文件夹是source,下面是eclipse中设置方法:
1、右键项目,选择Properties
2、在弹出的视窗中,选择左侧的Java Build Path
3、此时在右侧菜单中选择Source
4、在右侧菜单下的窗体,选择Add Folder,把你刚才建立的文件夹例如src选中


配置文件Beans.xml

需要新建一个XML文件来配置bean,这个XML的作用是集中在一个地方,配置和管理所有的bean。
将这个XML文件放在src下面,这样就保证Eclipse可以在CLASSPATH下读取到这个文件。
新建一个Beans.xml,要注意和MainApp.java中ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml")一致。


Beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="helloWorld" class="com.mc.app.WebApp.HelloWorld"><property name="message" value="Hello World By http://blog.csdn.net/unix21!"/></bean></beans>

spring xsd文件地址

http://www.springframework.org/schema/beans/


运行Maven命令

右击项目,点击Run as,如下所示:

可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息 如果你想运行的maven命令在这里没有找到,点击Maven build 5创建新的命令。

填入Maven命令:clean package,点击Run即可:

Maven常用命令
清理     clean
编译     compile
打包     package
安装     install
跳过测试         clean package -Dmaven.test.skip=true 


在App.java上右键点击Run As Java Application


成功输出:Your Message : Hello World By http://blog.csdn.net/unix21!


第二次重新使用Maven Build

可以选择Maven Build4,这样就可以使用之前使用过的命令,如果使用5就弹出使用新框,可以使用新命令


--------------------------------------------------------------

补充:如果Maven配置少了一个spring的jar包,提示: ArtifactTransferException: Failure to transfer


添加依赖之后,总是报添加的依赖jar文件找不到,但是在nexus的库里面能找到这个依赖的jar文件,但是在本地的maven库里面找不到,于是我将本地库里面这个依赖对应的文件夹删掉,然后在eclipse里面执行update dependencies。成功解决问题!

本地库的位置其实很好找

删掉.m2目录下的repository


-------------------------------------------------------------

重要补充:

如果提示找不到Beans.xml配置文件

INFO: Loading XML bean definitions from class path resource [Beans.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [Beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [Beans.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343)

那么就是没有将配置文件放入资源文件中!

1.可以项目--右键-新增资源文件夹  也就是  "Source folder"


2.命名资源文件夹名称

src/main/resources

建好的资源文件夹如图所示:


3.新增Beans.xml文件

这个文件和前面的内容一致。


4.重新Run As Java Application

即可成功访问。


5.如果还是不行,可以尝试修改Beans.xml配置文件中的字符。还有需要注意配置文件不要写错了!

相关文章:

Go 语言官网全新改版

2019独角兽企业重金招聘Python工程师标准>>> 前两天发现 Go 语言官网改版了&#xff0c;布局由原来的左中右变成了上中下结构&#xff0c;主色调没有变&#xff0c;整体依然保持简洁的风格。在首页添加了一个叫 Playground 的模块&#xff0c;它可以编译、运行你输入…

就在今晚 | 港科大李世玮教授问诊未来,开辟大湾区新航路

阳春三月&#xff0c;万象更新&#xff0c;2020年注定是不平凡的一年&#xff01;有激荡就会遇见变革&#xff0c;有挑战就会迎来机遇。今天总会过去&#xff0c;未来将会怎样&#xff1f;香港科大商学院内地办事处重磅推出全新升级的《袁老师访谈录》全新系列【问诊未来院长系…

NLP(Natural Language Processing)

https://github.com/kjw0612/awesome-rnn#natural-language-processing 通常有&#xff1a; (1)Object Recognition (2)Visual Tracking (3)Image Generation (4)Video Analysis NLP: &#xff08;1&#xff09;Language Modeling &#xff08;2&#xff09;Speech Recognition…

Linux环境编程

1.__sync_fetch_and_add和__sync_bool_compare_and_swap gcc从4.1.2提供了__sync_*系列的built-in函数&#xff0c;用于提供加减和逻辑运算的原子操作。 其声明如下&#xff1a; type __sync_fetch_and_add (type *ptr, type value, ...) type __sync_fetch_and_sub (type *p…

AI新基建如何构建?浪潮给出了一个答案

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;伴随生产力升级&#xff0c;社会基础设施也正在发生变化。而智慧时代的新型基础设施&#xff0c;要能够对外提供各种算力服务、数据服务和AI服务。浪潮认为&#xff0c;其核心是计算力的生产中心。因此&…

协作是企业管理的重点和难点

这个问题让我想起了一道数学题&#xff0c;11&#xff1f;。在生活中这个题目的答案会千差万别&#xff0c;更别说一个企业。在我眼中&#xff0c;企业中最难管的是关系&#xff0c;更准确的说是协作。 经理过好几个信息系统建设的项目&#xff0c;小到一个简单的邮件系统&…

使用CSS3美化复选框checkbox

我们知道HTML默认的复选框样式十分简陋&#xff0c;而以图片代替复选框的美化方式会给页面表单的处理带来麻烦&#xff0c;那么本文将结合实例带您一起了解一下使用CSS3将复选框checkbox进行样式美化&#xff0c;并且带上超酷的滑动效果。 查看演示 下载源码HTML 通常我们使用以…

Thift安装

thrift官网http://thrift.apache.org/ #wget http://mirror.bit.edu.cn/apache/thrift/0.9.2/thrift-0.9.2.tar.gz #tar -zvxf thrift-0.9.2.tar.gz # ./configure --prefix/usr/local/thrift #make && makeinstall 增加到环境变量 #export PATH$PATH:/usr/…

​“手把手撕LeetCode题目,扒各种算法套路的裤子”

出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;刷LeetCode刷到懵还是一头雾水&#xff1f;莫慌&#xff0c;这里有一个标星27000的算法详解教程。从项目命名来看&#xff0c;作者labuladong就有着要干翻算法的精气神。当然&#xff0c;这个教程不只是为了机械刷题。…

c语言标准库低通的qsort函数不适宜所有排序任务的原因

c语言标准库低通的qsort函数不适宜所有排序任务的原因&#xff1a; 第一&#xff1a;它只能用于内存中的数组排序&#xff0c;不能对链表中的数据排序&#xff1b; 第二&#xff1a;因为它是参数化的函数&#xff0c;所以能对各种数据进行操作&#xff0c;也造成它的运行速度比…

第三周学习进度条

星期日 星期一 星期二 星期三 星期四 星期五 所花时间 下午&#xff1a; 3:00-5&#xff1a;00 上午&#xff1a; 8&#xff1a;00-10&#xff1a;00 下午&#xff1a; 3:00-5&#xff1a;00 下午&#xff1a; 2:30-4:30 下午&#xff1a; 4:30-5:30 下午&#xff1…

jca分析java dump日志

可以使用jca分析java dump的日志 jca:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid2245aa39-fa5c-4475-b891-14c205f7333c 运维报说是某机房突然全部都线程阻塞了 其中锁住了tcp的socket&#xff0c;在研究无果的情况下…

shell脚本10

对于使用/bin/bash作为登录shell的系统用户,检查他们在/opt目录中拥有的子目录或文件数量,如果超过100个,则列出具体数值及对应的用户帐号.具体实现: #!/bin/bash DIR"/etc" LMT100 validusersgrep "/bin/bash" /etc/passwd|cut -d ":" -f 1 for…

百度重磅发布云手机:低配置也可玩大型游戏 21

又一个科技巨头发力云游戏。4月15日&#xff0c;百度举行"云手机"线上直播会&#xff0c;发布基于自主研发的ARM服务器的百度"云手机"产品&#xff0c;让用户摆脱硬件的制约&#xff0c;中低端设备也能流畅运行大型游戏和应用。百度"云手机"可以…

创业思维 - Qunar的故事

在这里特别想介绍下Qunar&#xff0c;因为他和我们的最主要的系统-交易系统相关。大家都知道淘宝的交易平台可以说是国内甚至全球最复杂的交易系统。但是我们的交易系统由于承担业务太多&#xff0c;发展太久&#xff0c;历史包裹太重&#xff0c;在业务架构上可以说有很大的问…

“机器学习还是很难用!”

作者 | Caleb Kaiser译者 | 香槟超新星&#xff0c;责编 | 郭芮出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;我是一名Cortex贡献者&#xff0c;Cortex是一个用于在生产中部署模型的开源平台。首先声明&#xff0c;以下内容是基于我对一些机器学习团队的观察总结…

silverlight 无法发布 如何灵活配置IP

灵活配置IP可以有一个工具的 我为了比赛花了 两天工具做了一个配置Silverlight IP的小工具 可以参考 http://download.csdn.net/source/2714688

使用GoAccess分析Nginx日志

下载 GoAccess 的源代码、编译和安装&#xff1a; http://www.goaccess.io/download # wget http://tar.goaccess.io/goaccess-0.9.6.tar.gz# tar -xzvf goaccess-0.9.6.tar.gz# cd goaccess-0.9.6/# ./configure --prefix/usr/local/goaccess --enable-geoip --enable-utf8#…

STM32中GPIO的8种工作模式

一、推挽输出&#xff1a;可以输出高、低电平&#xff0c;连接数字器件&#xff1b;推挽结构一般是指两个三极管分别受两个互补信号的控制&#xff0c;总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。形象点解释&#xff1a;推挽&#xff0c;就是有推有拉&…

深挖谷歌 DeepMind 和它背后的技术

作者 | James Murphy译者 | 天道酬勤 责编 | Carol出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;人工智能(AI)的子集已经成倍增长&#xff0c;并完成了只有人类才能完成的各种任务。像机器学习这样的技术可以执行管理任务、人脸识别、下棋&#xff0c;甚至翻译语言…

Java编译原理

代码Test.java public class Test {public static void main(String[] args) {int a 0xae;int b 0x10;int c a b;int d c 1;String s;s "hello";}} # javac Test.java # javap -c Test 参考&#xff1a;http://codemacro.com/2015/03/31/intro-java-bytecod…

RHEL5.5学习--安装vmtools

首先先说明两点&#xff1a; &#xff08;1&#xff09;vmtools的安装需要gcc的支持&#xff0c;所以首先确定gcc是否已经安装。可运行gcc -v&#xff0c;若能显示gcc版本信息则说明安装完成&#xff0c;否则请查看上一篇文章&#xff08;RHEL5.5学习--查看gcc是否安装以及如何…

SQL server 专业词汇

sql组成&#xff1a;DDL&#xff1a;数据库模式定义语言&#xff0c;关键字&#xff1a;createDML&#xff1a;数据操纵语言&#xff0c;关键字&#xff1a;Insert、delete、updateDCL&#xff1a;数据库控制语言 &#xff0c;关键字&#xff1a;grant、removeDQL&#xff1a;数…

只会高中数学运算就能发现算法?Google开源的AutoML-Zero有多厉害

译者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;机器学习研究&#xff0c;已经在多个方面都取得了进步&#xff0c;包括模型结构和优化方法等。而使此类研究自动化的工作&#xff08;称为AutoML&#xff09;也有重大进展。这一进展主要集中在神经网络的体…

Tsar安装使用

Tsar是淘宝开发的一个非常好用的系统监控工具&#xff0c;在淘宝内部大量使用&#xff0c;它不仅可以监控CPU、IO、内存、TCP等系统状态&#xff0c;也可以监控Apache&#xff0c;Nginx/Tengine&#xff0c;Squid等服务器状态。值得一提的是&#xff0c;Tsar 支持将数据存储到 …

《虚拟化与云计算》读书感(四)数据中心的设计和构造

任何大型系统的设计和构造都是一项复杂的过程&#xff0c;数据中心的的设计和构造也是一项系统的工程&#xff0c;需要人们相互协作来完成总体的设计、建筑和基础设施的构建&#xff0c;以及软硬件的采购和上线。几天我看的书中这一节主要是将如何总体设计和构造以及要做的工作…

C 的大致运行原理。

// 尽量多上干货。我是Xcode 运行环境。 // 这些简单的我就写的 少些 。 任何一个C语言程序都是由一个或者多个程序段&#xff08;小程序&#xff09;构成的&#xff0c;每个程序段都有自己的功能&#xff0c;我们一般称这些程序段为“函数”。 函数有 声明(定义) 和 使用&…

Spring AOP与IOC以及自定义注解

Spring AOP实现日志服务 pom.xml需要的jar <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version> </dependency> <dependency><groupId>org.spring…

小白也能看懂:一文学会入门推荐算法库 surprise

来源 | 机器学习与推荐系统surprise 支持的每个算法本身思路并不复杂&#xff0c;代码也不晦涩难懂&#xff0c;我们主要的目的是理解它的架构&#xff0c;学习框架各个部分的交互。这篇文章是想从一个整体的视角&#xff0c;以作者最初的思路为主线进行介绍&#xff0c;观察并…

开发人员必备网站

http://www.gotapi.com/语言&#xff1a;英语简介&#xff1a;HTML,CSS,XPATH,XSL,JAVASCRIPT等API的查询网站。http://www.w3schools.com/语言&#xff1a;英语简介&#xff1a;W3C制定的标准诸如XML,HTML,XSL等等的在线学习教程。http://www.xml.org.cn/语言&#xff1a;中文…