Maven中的profile标签简介
2016-03-07 10:17
281 查看
使用maven管理项目有一个好处是就是可以针对不同的环境使用不同的编译打包设置,方便了多环境下的打包部署,一般我们开发项目都会有至少开发
环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段:
写道
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>cc.mzone</groupId>
<artifactId>myjar</artifactId>
<version>0.1</version>
<packaging>jar</packaging>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/abc</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>root</jdbc.password>
</properties>
<profiles>
<profile>
<id>product</id>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/abc123</jdbc.url>
<jdbc.username>rootuser</jdbc.username>
<jdbc.password>rootpwd</jdbc.password>
</properties>
</profile>
</profiles>
</project>
这里我们在pom文件中定义了数据库的相关配置,同时定义了一个profile,其id为product,同时在这个profile中也定义了数据库的相关配置。这样我们使用mvn package
命令时就可以使用默认的jdbc设置,当我们使用mvn package -P product
时maven就会自动使用id为product的profile中的数据库配置,这个是maven读取属性配置文件的覆盖。
然后再看pom文件中的resources段的配置:
写道
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
其中最重要的是true 这段,这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}
这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换。我们可以在src/main/resources下定义一个jdbc.properties配置文件,内容如下:
写道
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
分两次执行上面的命令后,然后到项目的target目录下查看打包后的结果,可以看到jdbc.properties文件的内容随着打包的参数不同而变化了,从而也就实现了我们多环境的配置自动打包了。
写道
## 使用默认的配置信息
mvn clean package
## 使用product环境的配置信息
mvn clean package -P product
转载自:http://xiaoxuejie.iteye.com/blog/1564002
环境和正式环境两个,针对这两个环境的配置信息也会有所不同,比如数据库的配置等。我们可以使用maven的profile定义来进行区分,比如我们在项目的pom文件中定义如下片段:
写道
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>cc.mzone</groupId>
<artifactId>myjar</artifactId>
<version>0.1</version>
<packaging>jar</packaging>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/abc</jdbc.url>
<jdbc.username>root</jdbc.username>
<jdbc.password>root</jdbc.password>
</properties>
<profiles>
<profile>
<id>product</id>
<properties>
<jdbc.url>jdbc:mysql://localhost:3306/abc123</jdbc.url>
<jdbc.username>rootuser</jdbc.username>
<jdbc.password>rootpwd</jdbc.password>
</properties>
</profile>
</profiles>
</project>
这里我们在pom文件中定义了数据库的相关配置,同时定义了一个profile,其id为product,同时在这个profile中也定义了数据库的相关配置。这样我们使用mvn package
命令时就可以使用默认的jdbc设置,当我们使用mvn package -P product
时maven就会自动使用id为product的profile中的数据库配置,这个是maven读取属性配置文件的覆盖。
然后再看pom文件中的resources段的配置:
写道
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
其中最重要的是true 这段,这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}
这样的形式,maven会自动读取配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换。我们可以在src/main/resources下定义一个jdbc.properties配置文件,内容如下:
写道
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
分两次执行上面的命令后,然后到项目的target目录下查看打包后的结果,可以看到jdbc.properties文件的内容随着打包的参数不同而变化了,从而也就实现了我们多环境的配置自动打包了。
写道
## 使用默认的配置信息
mvn clean package
## 使用product环境的配置信息
mvn clean package -P product
转载自:http://xiaoxuejie.iteye.com/blog/1564002
相关文章推荐
- Android 开发60条技术经验总结
- Delphi 操作Word怎么控制光标的位置
- js 开源k线图开发库
- const
- swift 指纹识别
- 要善于利用数组字典
- Android学习笔记 -- 平台框架
- 注解框架Android Butter Knife的介绍
- Android binder (4): Service Manager的初始化
- 30分钟学会使用grunt打包前端代码(二)
- AngularJS ng-repeat下使用ng-model
- Yocto tips : Yocto 如何加快软件包的下载 如何只下载所有需要的软件包而不编译
- Fragment事务的提交的方式
- 10grac ASM磁盘组添加和删除磁盘
- Android库Volley的使用介绍
- Android Binder (0):代码层次
- 在javaWeb项目上的Error
- java可变参数学习
- hibernate4 和 spring3 整合注意事项:HibernateDaoSupport没有了找到篇好文章,我之前遇到的问题都在这都能找到。其实出现这些问题的关键就是hibernate4和hib
- poj1416