第一步,使用maven创建一个简单的project。
这里取名为maven-demo,工程目录结构如下图:

pom.xml 配置文件如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:///POM/4.0.0 http:///xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shell.maven.demo</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>maven-demo</name>
<url>http://</url>
<!-- 指定私服 -->
<repositories>
<repository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.shell.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.shell.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<!-- 指定在jdk1.6环境下编译 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
第二步,添加对Spring等第三方依赖。
pom.xml配置文件修改成如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:///POM/4.0.0 http:///xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shell.maven.demo</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>maven-demo</name>
<url>http://</url>
<properties>
<springframework.version>3.1.0.RELEASE</springframework.version>
</properties>
<!-- 指定私服 -->
<repositories>
<repository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.shell.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.shell.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<!-- 指定在jdk1.6环境下编译 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- spring 有关jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springframework.version}</version>
</dependency>
<!-- oracle 驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3.0</version>
</dependency>
<!-- 采用dbcp数据源 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- comomons jar -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
</dependencies>
</project>
第三步,在classpath目录下创建spring配置文件applicationContext.xml,同时定义id="dataSource"及id="jdbcTemplate"的bean。
applicationContext.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" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="initialSize" value="1"/>
<property name="maxActive" value="2"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"></property>
</bean>
</beans>
第四步,修改pom.xml配置文件,添加数据库连接相关的属性定义,同时开启maven资源过滤。
pom.xml配置文件修改成如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:///POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http:///POM/4.0.0 http:///xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.shell.maven.demo</groupId>
<artifactId>maven-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>maven-demo</name>
<url>http://</url>
<properties>
<!-- system property -->
<encoding>UTF-8</encoding>
<maven.test.skip>true</maven.test.skip>
<skipTests>true</skipTests>
<springframework.version>3.1.0.RELEASE</springframework.version>
<!-- jdbc properties 本地连接的配置 -->
<jdbc.url>jdbc:oracle:thin:@localhost:1521:shell</jdbc.url>
<jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
<jdbc.username>scott</jdbc.username>
<jdbc.password>yangxi2010</jdbc.password>
</properties>
<repositories>
<repository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.infinitus.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>myRepo</id>
<name>myRepo Repository</name>
<url>http://maven.infinitus.com.cn:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<!-- 对主资源目录开启资源过滤 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<!-- 指定在jdk1.6环境下编译 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- spring 有关jar -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springframework.version}</version>
</dependency>
<!-- oracle 驱动 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3.0</version>
</dependency>
<!-- 采用dbcp数据源 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- comomons jar -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
</dependencies>
</project>
第五步,在main方法中启动spring容器,使用jdbcTemplate查询一条数据出来。
本地数据库现在存在一张emp表,表中含有的数据如下图:

现在将empNo为7369的这条记录查询出来并在控制台输出。
main方法代码如下图:
/**
* Test.java 2014年6月13日
*/
package com.shell.maven.demo;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
/**
* <p>
* <b>Test</b> 是
* </p>
*
* @since 2014年6月13日
* @author shell
* @version $Id$
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// 启动spring 容器
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
JdbcTemplate jdbcTemplate = (JdbcTemplate) applicationContext.getBean("jdbcTemplate");
// 查询数据
String sql = "select empno, ename, job from EMP ";
String result = jdbcTemplate.query(sql, new ResultSetExtractor<String>() {
public String extractData(ResultSet rs) throws SQLException, DataAccessException {
rs.next();
String empNo = rs.getString(1);
String eName = rs.getString(2);
String job = rs.getString(3);
return "empNo:" + empNo + ", eName:" + eName + ", job:" + job;
}
});
System.out.println(result);
}
}
第六步,编译maven-demo 工程。
在命令行执行 mvn clean install命令,入下图:
开始执行命令

编译成功结果

第七步,执行main方法,结果入下图:

看到上图蓝色框中的内容,表示数据查询操作成功。
此时我们可以去到classpath目录下查看applicationContext.xml文件的内容,结果如下图:

如上图所示,${jdbc.url}等变量被成功替换了。
maven的这个资源过滤特性可以帮助我们隔离开发环境和生产环境。不过要配合maven的profile配置才好用,
下面在pom.xml增加一个profile配置,用于配置生产环境的数据库连接信息。
第八步,配置生产环境数据库连接信息的profile
pom.xml配置文件增加如下配置:
<profiles> <profile> <id>prod</id> <properties> <!-- jdbc properties 生产连接的配置 --> <jdbc.url>jdbc:oracle:thin:@172.20.70.28:1521:gbst</jdbc.url> <jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
<jdbc.username>CBSPROD2</jdbc.username>
<jdbc.password>CBSPROD2</jdbc.password>
</properties>
</profile>
</profiles>
第九步,重新编译工程。(使用profile中的配置,个性化编译)

注意上面敲的是mvn clean install -P prod 命令,这里的-P表示使用profile的配置,prod是配置的生产数据库连接信息的profile的id名称。执行上诉命令后,id为prod的profile中的配置就会替换掉pom.xml中配置的相应的原内容。(这里替换的是properties中的内容)

提示编译成功,这是先去看下编译后的applicationContext.xml文件。
如下图:

从上图可以看到,数据库连接信息确实被替换成生产的了。
可以再次去查询生产库的中数据,验证效果。
--------------------------------------------------------
resource下的其它节点,见下图:

还有excludes includes targetPath 三个节点,具体用法可根据名称含义敲代码进行验证。
我的理解及验证结果如下:
<build> <!-- 主资源目录 --> <resources> <resource> <!-- 设定主资源目录 --> <directory>src/main/resources</directory> <!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,只处理如下配置中包含的资源类型 <includes> <include>*.xml</include>
</includes>
-->
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,不处理如下配置中包含的资源类型(剔除下如下配置中包含的资源类型)
<excludes>
<exclude>*.xml</exclude>
</excludes>
-->
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,指定处理后的资源文件输出目录,默认是${build.outputDirectory}指定的目录
<targetPath>d:/</targetPath>
-->
<!-- maven default生命周期,process-resources阶段执行maven-resources-plugin插件的resources目标处理主资源目下的资源文件时,是否对主资源目录开启资源过滤 -->
<filtering>true</filtering>
</resource>
</resources>
</build>
















