`
xigua366
  • 浏览: 102455 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Maven资源过滤应用

阅读更多

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



 

pom.xml 配置文件如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<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/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://maven.apache.org</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://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/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://maven.apache.org</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://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/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://maven.apache.org</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>
 重启编译后再看编译后的applicationContext.xml文件。(不过这时编译的命令要变一下,具体见第九步操作)
第九步,重新编译工程。(使用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>
 
  • 大小: 41.6 KB
  • 大小: 629.6 KB
  • 大小: 86.5 KB
  • 大小: 210.3 KB
  • 大小: 754 KB
  • 大小: 1 MB
  • 大小: 133.4 KB
  • 大小: 210 KB
  • 大小: 260.5 KB
  • 大小: 33.8 KB
分享到:
评论

相关推荐

    解决Maven资源过滤的pom配置文件

    ### 解决Maven资源过滤的POM配置文件 在Maven项目中,资源文件(如配置文件、XML文件等)的处理非常重要。Maven通过`&lt;build&gt;`标签下的`&lt;resources&gt;`配置来管理这些资源文件的编译和打包过程。本文将详细解析如何...

    maven 过滤文件夹打包

    "maven 过滤文件夹打包"这个主题涉及到的是如何利用Maven的资源过滤功能来实现针对不同运行环境的配置文件打包。下面将详细解释这一过程。 在开发环境中,我们通常会有多种配置文件,比如`application-dev....

    maven资源过滤打包后文件变大的处理方法

    maven资源过滤打包后文件变大的处理方法 Maven是一款流行的Java项目管理和构建工具,广泛应用于企业级项目中。但是,在使用Maven进行资源过滤和打包时,经常会遇到文件变大的问题。本文将详细介绍Maven资源过滤打包...

    maven的本地资源包

    1. **资源过滤**:Maven提供资源过滤功能,允许我们在构建过程中替换或过滤资源文件中的变量。例如,`src/main/resources`下的配置文件可以被自动处理,替换掉`${property}`形式的占位符。 2. **资源复制**:通过`...

    maven+jkos资源

    `WEB-INF/web.xml`是Web应用的部署描述符,定义了应用的组件、监听器、过滤器、Servlet等的配置信息。`WEB-INF/classes`和`WEB-INF/lib`则分别用于存放应用的编译后class文件和外部依赖的jar库。 结合Maven和JKOS,...

    Maven打包,指定classes路径

    以上就是关于"Maven打包,指定classes路径"的知识点,主要涉及到Maven的资源配置和插件定制。理解并掌握这些配置可以帮助开发者更高效地管理和构建Java Web应用。同时,记得在实际项目中根据实际情况调整`pom.xml`,...

    maven入门.docx

    Maven 是一个流行的项目管理和整合工具,广泛应用于 Java 开发领域。它为开发者提供了完整的构建生命周期框架,帮助开发者简化项目的构建过程,使得项目的管理和构建更加标准化、自动化。 **为什么选择 Maven?** ...

    idea+maven+springmvc 登录过滤器

    本文将详细讲解如何使用IntelliJ IDEA(Idea)、Maven和Spring MVC框架来创建一个登录过滤器,以及如何将这个过滤器作为请求拦截器应用于实际项目中。 首先,让我们理解一下`Idea`、`Maven`和`Spring MVC`。`Idea`...

    maven简单web实例

    在POM中,你可以配置打包相关的设置,如Web应用的入口点、过滤器、监听器等。 ** "mywebapp"项目实例 ** "mywebapp"可能是一个使用Maven构建的简单Web应用实例。这个项目可能包含以下结构: 1. `src/main/java`:...

    Intellij IDEA中使用maven filter遇到的问题

    Maven Filter是Maven资源插件(maven-resources-plugin)的一部分,它允许我们在构建过程中对资源文件进行替换操作。通过使用`${property}`语法,我们可以引用Maven属性并在编译或打包阶段动态替换这些值。这对于多...

    过滤器Filter的全面解析

    这是过滤器的核心方法,它接收HttpServletRequest和HttpServletResponse对象作为参数,通过调用`chain.doFilter()`方法将请求传递给下一个过滤器或目标资源。开发者可以在doFilter方法中添加自定义逻辑,比如登录...

    maven 初始化webapp

    在`WEB-INF`目录下,我们可以找到`web.xml`,这是一个部署描述符,它定义了Web应用的行为,比如Servlet的映射、过滤器配置、会话超时等。在Java EE的Web应用中,`WEB-INF`目录是受保护的,外部不能直接访问,只有...

    使用maven 部署环境 mvc模式 实现 登录 退出登录注册 过滤和监听的功能

    基本目录包括`src/main/java`(存放源代码)、`src/main/resources`(存放资源配置文件)、`src/main/webapp`(存放Web应用资源)等。 3. **Spring MVC框架** Spring MVC是Spring框架的一部分,用于处理Web请求。...

    Maven学习必要插件

    - `maven-resources-plugin`:处理资源文件,如复制、过滤等。 - `maven-jar-plugin`:打包Java应用为JAR文件。 - `maven-war-plugin`:打包Web应用为WAR文件。 - `maven-eclipse-plugin`:生成Eclipse项目文件...

    maven-3.0.3下载链接

    3. **资源过滤**:允许在构建过程中对资源文件进行动态替换或过滤,提高了构建的灵活性。 4. **更好的错误处理**:改进了错误报告机制,使得错误信息更加准确和详细,便于问题定位。 5. **增强的依赖管理**:优化了...

    Maven资料.pdf

    最后,Maven在实践项目中也支持对项目添加额外的资源文件和过滤文件,实现多环境配置。通过这种方式,可以在同一套代码基础上,轻松地根据不同环境进行配置调整,使得项目的部署和运维变得更加灵活高效。

    maven resource

    ### Maven资源管理与Java项目配置详解 #### 一、Maven简介 Apache Maven 是一个流行的项目管理和理解工具,主要用于Java项目的构建、依赖管理和项目信息管理。通过Maven,开发者能够轻松地管理项目的生命周期,...

    ssm+maven+shiro

    此外,项目的结构通常包括src/main/java目录下存放Java源代码,src/main/resources存储资源配置文件,src/main/webapp是Web应用的根目录,包含WEB-INF、static资源和JSP页面。pom.xml文件定义了项目的构建过程和依赖...

    maven+jersey项目源码

    Maven 是一个强大的项目管理和构建工具,主要应用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model,POM),自动化项目的构建、报告和文档生成。Maven 提供了一个项目信息管理工具,包括依赖...

    使用Eclipse构建Maven的Web项目

    - Maven Web项目的基本目录结构包括src/main/java(存放Java源代码)、src/main/resources(存放资源文件)、src/main/webapp(存放Web应用资源,如HTML、JS、CSS、Web-INF等)。 - Web-INF目录下应包含web.xml,...

Global site tag (gtag.js) - Google Analytics