因为本人 最近忙着公司事情,昨天没有写博客,今天就继续写吧web
需求:因为最近开发clover项目 ,没有使用spring,更没有使用任何框架,而使用J2EE的web工程,因此链接ZK和MongoDB、Redis等服务器需用指定properties文件,redis
而目前公司又分各套环境(dev、test、product),因此但愿打包的时候 根据profile id 来动态使用不一样环境properties文件 或者动态修改properties参数值spring
方法一:使用一套properties配置文件,但具体参数使用${key}占位符方式打包替换apache
maven的pom中指定每套环境的参数值服务器
咱们还要启动resources的filter过滤器:框架
按照上述配置后,咱们执行maven打包操做后:maven
咱们能够看到mongoDBConfig.properties、redisConfig.properties、zkConfig.properties等文件都被替换到指定环境的参数了ui
因为 有些老系统会在项目中的resources下指定各套环境配置文件,以下图片:spa
可是咱们打包后 只但愿将指定环境下的*.properties文件都移动到classes下,因此能够考虑使用方法二插件
方法二:使用maven-antrun-plugin插件方式实现
咱们只在打包dev环境:
咱们要指定resources.dir目录为src/main/resources/dev
咱们增长一个plugin 为maven-antrun-plugin,因为我只要在子工程clover-core下面移动这几个文件,最终打成一个jar包,因此要把这个plugin代码放在clover-core下的pom.xml文件,若是把这个plugin放在父工程的pom.xml下那就移动全部的子工程下resources文件
仍是贴上代码吧:
<build> <finalName>clover-core-${clover.version}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>compile</id> <phase>compile</phase> <configuration> <tasks> <echo message="********************** copy resources to classpath*************************"/> <echo message="********************** copy ${resources.dir} to classpath*************************"/> <copy todir="target/classes" overwrite="true"> <fileset dir="${resources.dir}"> <include name="*.*"/> <include name="*/*.*"/> </fileset> </copy> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources></build>
咱们执行打包后:
咱们能够看到clover-core下已经将这几个*.properties移动到classes下了
我的仍是比较推荐第一种方式
PS:有的时候 咱们想经过动态打包,生成的子工程的名字是带各套环境, 好比:clover-core-dev-1.0.jar
咱们在父工程的profile下设置clover.version
子工程clover-core想最终打包是clover.version指定的环境+版本号:
<version>${clover.version}</version> ---这个将会打包后deploy中央私库后最终的version
<finalName>clover-core-${clover.version}</finalName> --这个就是子工程clover-core打包最终名字
咱们执行打包后:
私库
当咱们打war包的时候,咱们也能够指定依赖模块的版本号:
咱们这里面使用的 profile配置的环境version,但让你想本身改为别的版本,你打包后就能够看到某个依赖的jar包就是你指定的版本
咱们把clover-core的版本改为dev-1.0
再把clover-core的pom.xml
打包后 咱们看下war包中:
但我看下clover-core子工程下的target:
原来是这样的
maven用的时间却是很长,但大多时间都是一次配置后,再没有修改后,而后开发项目,但有些细节 最终没有研究那么明白
文章写的有点水,但愿对您受用,谢谢