这篇博客主要是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天的时间左右,虽然不是很熟练,但是在这两天中,学到了蛮多的东西,参考别人的博客,文章,看官方的文档,进行编程,这过程还是蛮享受的。希望我的学习过程能对观看的你也有帮助,有不懂的,或者觉得我的有问题,我们可以一起交流,学习,一起进步。