由于本人 最近忙着公司事情,昨天没有写博客,今天就继续写吧
需求:由于最近开发clover项目 ,没有使用spring,更没有使用任何框架,而使用J2EE的web工程,所以连接ZK和MongoDB、Redis等服务器需用指定properties文件,
而目前公司又分各套环境(dev、test、product),所以希望打包的时候 根据profile id 来动态使用不同环境properties文件 或者动态修改properties参数值
方法一:使用一套properties配置文件,但具体参数使用${key}占位符方式打包替换
maven的pom中指定每套环境的参数值
我们还要启动resources的filter过滤器:
按照上述配置后,我们执行maven打包操作后:
我们可以看到mongoDBConfig.properties、redisConfig.properties、zkConfig.properties等文件都被替换到指定环境的参数了
由于 有些老系统会在项目中的resources下指定各套环境配置文件,如下图片:
但是我们打包后 只希望将指定环境下的*.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用的时间倒是很长,但大多时间都是一次配置后,再没有修改后,然后开发项目,但有些细节 最终没有研究那么明白
文章写的有点水,希望对您受用,谢谢
相关推荐
sprintboot maven 打包分离lib jar 资源文件 properties xml yml 详细信息查看我的博客 https://mp.csdn.net/postedit/80274087 java -jar -cp 启动
maven打包 maven打jar包详细步骤
这是一个springboot+maven写的demo,主要演示springboot项目通过maven插件,将依赖与配置文件打包到jar包外部,实现灵活的项目管理.仅供参考学习
这里面有详细的处理maven项目中resources目录下的资源文件,方便快捷的得到或设置资源文件中的内容,本人亲测,里面还有示例
该jar包功能,可以在一个properties文件里面定义jdbc.url=${url},在另一个properties文件定义具体的值,通过该jar可以获取到哪个具体的值。下载之后,自行安装到本地maven仓库,安装命令参考我另一篇博文。具体pom....
maven+bat打包,通过在maven中配置插件执行bat脚本进行目录下的打包。
sprintboot maven 打包分享lib 资源文件properties xml yml 查看我的博客 https://mp.csdn.net/postedit/80274087
将java生成可执行exe文件,可以直接在win下双击运行
maven打包使用yui压缩css和js文件
此文件为使用Maven管理的Mybatis入门的Demo代码打包, 详细的内容可见博客: Java框架 Mybatis入门笔记一 简单CRUD [使用Maven管理项目] https://blog.csdn.net/qq_33982232/article/details/88074101
Maven跳过测试类打包
所有资源都在一起,,打包下载,所有资源都在一起,,打包下载,所有资源都在一起,,打包下载,所有资源都在一起,,打包下载,所有资源都在一起,,打包下载,所有资源都在一起,,打包下载,所有资源都在一起,,...
NULL 博文链接:https://shansun123.iteye.com/blog/983763
当前案例中包含一整套的代码和word文档,非常适合新手... 主要是通过maven打包加载不同环境的properties文件 然后将对于的属性绑定到指定的实体对象中;然后通过调用接口可以看到加载不同环境控制台打印的内容是不一样的
maven多模块打包的pom文件,里面包含多个模块的pom文件,没有代码
maven下载
Maven打包,指定classes路径打包到WebContent/WEB-INF中
工程运行环境有研发,测试和生产,不同的运行环境配置不同,maven 打包时指定文件目录,使用指定的文件夹下的配置文件。
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
主要介绍了使用maven profile指定配置文件打包适用多环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧