Maven 管理不同jdk版本的jar,war,eba
在之前的项目中虽然用到了Maven,但 没有用到Maven 中的classifier,因此 发布jdk15和jdk16不同版本的包比较痛苦,jar在Maven的repository无法区别是什么jdk版本。
Maven坐标中的classifier似乎是专门解决不同jdk版本的包而设计的。另外flex中的module也是用classifier来解决的。
原理理论就不多说了,主要记录下来对原来项目做了哪些修改。
总的原则是jdk15下的lib不加classifier标记,jdk15和jdk16可以通用的lib不加classifier。只对在jdk16下需要特殊处理的lib加classifier标记。有以下几个jar在jdk16下特殊处理:
- web-extension
- war-extension
- pvm-flow-engine
- lo-docgen-service
- lo-snapshot-service
另外jdk16下assembly也要处理,jdk16下被特殊处理过的jar在dependency中要加上classifier标记。
Parent pom中的修改:
Parent pom中增加了一个jdk property,这个property为空,也就是默认jdk15情况下jdk标记为空:
<properties><jdk></jdk>
Jar plugin中增加了classifier配置。maven-jar-plugin在打包jar时,如果classifier为空时,生成的jar文件会忽略classifier。
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><classifier>${jdk}</classifier></configuration></plugin>
Sub project中的修改:
比如web-extension中在原来的profile中设置了jdk16属性,这样执行mvn命令时加上 -Djre=6时,${jdk}就不再为空,变成了jdk16, maven-jar-plugin打包出jar时就会加上classifier标记jdk16, web-extension-1.1.0.0-SNAPSHOT-jdk16.jar.
<profile><id>jre6</id><activation><property><name>jre</name><value>6</value></property></activation><properties><jdk>jdk16</jdk><manifest.template.name>template.mf.jre6</manifest.template.name><xml.bind.context.factory>com.sun.xml.internal.bind.v2.ContextFactory</xml.bind.context.factory></properties></profile>
Dependency
原来pom中的dependency如果有依赖jdk16下特殊处理过的lib(上面那5个),则在dependency中需要加上classifier标记.
<dependency><groupId>com.moodys.loan</groupId><artifactId>web-extension</artifactId><version>${loan.version}</version><classifier>${jdk}</classifier></dependency>
Classifier for EBA
目前打EBA的plugin还不支持classifier,只能采用一些非常规手段解决,下面的方法不是很好,只能将就着用着:
......<version>${xxx.version}${jdk.eba.classifier}</version><properties><jdk></jdk><jdk.eba.classifier></jdk.eba.classifier>......<profiles><profile><id>jre6</id><activation><property><name>jre</name><value>6</value></property></activation><properties><jdk>jdk16</jdk><jdk.eba.classifier>-jdk16</jdk.eba.classifier></properties></profile></profiles>......
Maven 管理不同jdk版本的jar,war,eba相关推荐
- mvn install java版本,maven的打包命令--assemblyinstall和maven update之后jdk版本变回1.5的问题...
maven的打包命令–assembly&install和maven update之后jdk版本变回1.5的问题 在进行maven项目打包时,可以有另个命令assembly和install 一. ...
- eclipse 修改maven项目的jdk版本
eclipse 修改maven项目的jdk版本 CreationTime--2018年6月8日10点29分 Author:Marydon 1.情景展示 jdk版本太低,如何修改 2.错误方式 第一步 ...
- eclipse maven项目 maven build 提示jdk版本不对
eclipse打包maven项目提示jdk版本不对,但eclipse版本已经修改jdk版本,可查看maven配置是否正确 maven项目中pom.xml 添加 <build><plu ...
- 关于使用jenv安装管理不同jdk版本
测试环境: centos6.6 关于使用jenv安装管理不同jdk版本 一. 首先下载jdk,解压到相关目录 下载地址: jdk8 http://download.oracle.com/otn-pub ...
- (转)如何修改maven的默认jdk版本
背景:在maven的配置文件中配置编译的jdk插件,就不需要在eclipse中进行重新的指定了. 问题 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2. ...
- eclipse中使用maven创建项目JDK版本默认是1.5解决方法
请看解决方案: 1. 修改maven的settings.xml文件. 添加以下行,jdk版本改为自己需要的版本: <profile> <id>jdk-1.7</id> ...
- maven配置默认jdk版本
在maven的默认配置中,对于jdk的配置是1.4版本,那么创建/导入maven工程过程中,工程中未指定jdk版本. 对工程进行maven的update,就会出现工程依赖的JRE System Lib ...
- jar包打补丁 jar -uf_windows下批处理指定不同jdk版本运行jar包
点击上方关注订阅黑码教主获取更多精彩内容 新建run.bat文件 @echo offset JAVA_HOME=E:JDK8set CLASSPATH=.;%JAVA_HONG%libdt.jar;% ...
- Eclipse 中 Maven 项目默认JDK版本为1.5 的解决方法
在 Eclipse 中 Maven project 的默认 JDK 版本是 1.5, 如果不在 settings.xml 或者 pom.xml 中显示的指出 JDK 版本,每次 右键项目--> ...
最新文章
- Python 3 —— 使用 PyMySQL 操作 MySQL8
- Dexposed:Android平台免Root无侵入AOP框架
- 原相机水印怎么改字_抖音/自媒体做影视二次剪辑,如何下载高清无水印视频?...
- SpringMVC子父容器源码剖析
- socket网络编程-字典
- 深入学习JavaScript: apply 方法 详解
- 多线程并发编程之构建自定义同步工具
- 游戏找不到DirectX的解决方法
- struts2上传 zip和rar文件类型
- python数据挖掘项目——航空公司客户价值分析(详解)
- 国外计算机论文翻译,计算机论文外文翻译
- Python爬取电影天堂指定电视剧或者电影
- java打印5排星号_Java-用星号打印菱形
- 工件SSM:war exploded: 部署工件时出错。请参阅服务器日志了解详细信息
- NRF51822 2.4G无线
- Redis - 启动
- BD(蓝光)的LPCM格式到PCM格式的转换
- 安卓 保存图片到相册
- windows7显示摄像头图标的方法
- 要直接,不要怂,谈钱才不伤感情