这篇博客主要是maven与spring的配置管理,利用maven来管理spring的依赖包。
本文为原创,转载请注明来至: http://blog.csdn.net/j903829182/article/details/38150795
maven与struts2的配置请参照: http://blog.csdn.net/j903829182/article/details/38128777
maven与hibernate的配置请参照: http://blog.csdn.net/j903829182/article/details/38147659
1.在cmd的dos命令下面利用maven创建一个web项目,不清楚可以参照我前面的两篇的博客。
2.把创建好的项目导入myeclipse,具体导入的方法,这里不再啰嗦了,不清楚的可以看 http://blog.csdn.net/j903829182/article/details/38128777
3.配置好项目的jdk版本,添加目录,修改项目的属性,详细的请参照 http://blog.csdn.net/j903829182/article/details/38128777
4.上面的配置好了以后,基本利用maven管理web项目的初步工作就完成了,接下来进行spring包管理的配置。
5.配置spring的依赖包:
打开pom.xml文件,在里面进行spring包的配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wj.demo.maven</groupId> <artifactId>maven4</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>maven4 Maven Webapp</name> <url>http://maven.apache.org</url> <!-- 属性配置 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> <scope>test</scope> </dependency> <!-- 添加Spring依赖 ,添加的都是本地的自己的spring的jar包--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <!-- <version>3.1.1.RELEASE</version> --> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.0.0.M2</version> </dependency> <dependency> <groupId>org.apache</groupId> <artifactId>commons-logging</artifactId> <version>1.1.3</version> </dependency> </dependencies> <build> <finalName>maven4</finalName> </build></project>
注意:我这里配置的包是比较新的,maven的中央仓库,可能还没更新,你如果按照我这样写的话会出错的,所以这里我配置的是自己本地的包,你也可以配置你自己本地的包方法是:
不管是新的包还是老的包, <groupId>****</groupId>里面的内容不变,可以不用改,按照老的配置组织名;
<artifactId>****</artifactId>这里面的内容也不要改,按照老的包配置包名,那哪里要改了???需要改的是<pre name="code" class="html"><version>***</version>版本号,你改成你本地的包的版本,所有的包你都这样配置好了以后,你保存一下,mavne会自动下载你需要的包,如果下载成功则不报错,否则会报错,有错误信息,这说明包下载失败了,那么该怎么办了?
首先,我们看错误的信息提示,到仓库里面找到报错的包,也就下载失败的包的位置,删除错误包目录下里面的所有的东西,把你自己本地的包复制进去,版本要和你的<span style="font-family: Arial, Helvetica, sans-serif;"><version>***</version>一样(包存放的路径,一般以仓库为根目录,以组织名(包一般是jar包,所以你有解压jar包的软件,你双击打开,一路点击下去,看到的就是组织名,我试了几个,的确是这样的)为文件夹的名字一路建立文件夹,最后建立以包名(不包括版本号)为名的文件2夹,最后建立以版本号文件名的文件夹,最后版本 号里面存放的就是对应版本的包)。</span>
其次,包放好了以后,你右击项目---〉选择Maven4Myeclipse----〉选择Update Project,等待更新,接着你在clean一下你的项目就可以了,如果还有错误,显示是没有下载到更新包,你就按照上面的步骤一个一个手动添加自己本地的包到仓库里面。
</pre><pre name="code" class="html"> 最后,没有报错了,则说明你的包已经添加成功了。
</pre><pre name="code" class="html">6.添加applicationContext.xml文件到src/main/resources目录下面
<pre name="code" class="html">applicationContext.xml文件里面的内容,在你下载的spring包里面有spring的api可以找到<span style="font-family: Arial, Helvetica, sans-serif;">applicationContext.xml里面的内容我这里spring4.0.0里面的配置信息是:</span>
<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- <bean id="..." class="..."> collaborators and configuration for this bean go here </bean> <bean id="..." class="..."> collaborators and configuration for this bean go here </bean> more bean definitions go here --><bean id="chinese" class="com.imp.Chinese"> </bean> <bean id="american" class="com.imp.American"> </bean></beans>
</pre><pre>
7.现在你可以测试一下项目,首先在cmd的dos界面里面进入到项目所在的目录中进行编译和测试,输入下面的2条命令:
1. mvn compile
2.mvn test-compile
如果不输入上面的2条命令,则可能出现找不到applicationContext.xml的错误!
8.写java代码测试文件都放在src/main/java目录下面,并在 src/main/java下面创建包名,在包里面写类,详细的就不写了,就贴出代码了 :
1.写一个接口:
package com.face;public interface Human { public void eat(); public void walk();}
2.写2个实现接口的类:
package com.imp;import com.face.Human;public class American implements Human{ public void eat() { // TODO Auto-generated method stub System.out.println("美国人吃西餐,我不喜欢吃西餐!!!"); } public void walk() { // TODO Auto-generated method stub System.out.println("美国人经常坐车,缺乏运动对身体不好!!!"); } }
package com.imp;import com.face.Human;public class Chinese implements Human{ public void eat() { // TODO Auto-generated method stub System.out.println("中国人很会吃,中国有很多的美食!!!"); } public void walk() { // TODO Auto-generated method stub System.out.println("中国人健步如飞,中国人身体好!!!"); }}
3.写一个工厂
package com.factory;import com.face.Human;import com.imp.American;import com.imp.Chinese;public class Factory { public Human getHuman(String name){ if("Chinese".equals(name)){ return new Chinese(); }else if("American".equals(name)){ return new American(); }else{ return null; } }}4.写一个测试类
package com.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;import com.face.Human;public class TestMain1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub /*Human human=null; human=new Factory().getHuman("Chinese"); human.eat(); human.walk(); human=new Factory().getHuman("American"); human.eat(); human.walk();*/ ApplicationContext context = new FileSystemXmlApplicationContext("src/main/resources/applicationContext.xml"); /*ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"services.xml", "applicationContext.xml"});*/ Human human=null; human=(Human) context.getBean("chinese"); human.eat(); human.walk(); human=(Human) context.getBean("american"); human.eat(); human.walk(); }}
9.现在像编译运行java程序那样运行 TestMain1类
如果出现了Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
则说明少加了一个包,解决:导入一个commons-logging.jar包即可,包的导入和上面再pom.xml里面配置包是一样的
如果出现了:Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException:
IOException parsing XML document from file [G:\maven\maven4\src\applicationContext.xml]; nested exception is java.io.FileNotFoundException:
src\applicationContext.xml (系统找不到指定的文件。)
Caused by: java.io.FileNotFoundException: applicationContext.xml (系统找不到指定的文件。)
解决:首先看是否已经进行了
1. mvn compile 2.mvn test-compile 操作,没有则进行这样的操作,如果已经进行了,还有错误,按照提示说明在目录 G:\maven\maven4\src\applicationContext.xml]下面是不存在 applicationContext.xml所以,检查main方法里面的 FileSystemXmlApplicationContext的构造函数的参数是否是 "src/main/resources/applicationContext.xml",不是的话,则改成这样的。如下所示:
ApplicationContext context =
new FileSystemXmlApplicationContext("src/main/resources/applicationContext.xml");
10.一切ok的话,则console会输出下面的信息
2014-7-26 22:01:07 org.springframework.context.support.FileSystemXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@742808b3: startup date [Sat Jul 26 22:01:07 CST 2014]; root of context hierarchy
2014-7-26 22:01:07 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from file [G:\maven\maven4\src\main\resources\applicationContext.xml]
中国人很会吃,中国有很多的美食!!!
中国人健步如飞,中国人身体好!!!
美国人吃西餐,我不喜欢吃西餐!!!
美国人经常坐车,缺乏运动对身体不好!!!
11.项目的目录结构:
总结:经过几天maven的学习,利用maven搭建了struts2,hibernate,和spring,对maven的基本使用有了一定的了解,基本上会使用了,对于maven搭建ssh,步骤比较多,不过也不难,利用maven搭建struts2,hibernate,spring的知识,相信利用maven搭建ssh不是什么难事了。经过利用maven管理配置包,方便就是,随时可以加入包,撤销包,比较的方面,而且,如果不是新版本的包,基本上maven自己会给我们下载好。对于maven从不熟悉到会用,大概花了2天的时间左右,虽然不是很熟练,但是在这两天中,学到了蛮多的东西,参考别人的博客,文章,看官方的文档,进行编程,这过程还是蛮享受的。希望我的学习过程能对观看的你也有帮助,有不懂的,或者觉得我的有问题,我们可以一起交流,学习,一起进步。
联系客服