在之前的项目中虽然用到了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相关推荐

  1. mvn install java版本,maven的打包命令--assemblyinstall和maven update之后jdk版本变回1.5的问题...

    maven的打包命令–assembly&install和maven update之后jdk版本变回1.5的问题 在进行maven项目打包时,可以有另个命令assembly和install 一. ...

  2. eclipse 修改maven项目的jdk版本

    eclipse 修改maven项目的jdk版本 CreationTime--2018年6月8日10点29分 Author:Marydon 1.情景展示 jdk版本太低,如何修改 2.错误方式 第一步 ...

  3. eclipse maven项目 maven build 提示jdk版本不对

    eclipse打包maven项目提示jdk版本不对,但eclipse版本已经修改jdk版本,可查看maven配置是否正确 maven项目中pom.xml 添加 <build><plu ...

  4. 关于使用jenv安装管理不同jdk版本

    测试环境: centos6.6 关于使用jenv安装管理不同jdk版本 一. 首先下载jdk,解压到相关目录 下载地址: jdk8 http://download.oracle.com/otn-pub ...

  5. (转)如何修改maven的默认jdk版本

    背景:在maven的配置文件中配置编译的jdk插件,就不需要在eclipse中进行重新的指定了. 问题 1.创建maven项目的时候,jdk版本是1.5版本,而自己安装的是1.7或者1.8版本. 2. ...

  6. eclipse中使用maven创建项目JDK版本默认是1.5解决方法

    请看解决方案: 1. 修改maven的settings.xml文件. 添加以下行,jdk版本改为自己需要的版本: <profile> <id>jdk-1.7</id> ...

  7. maven配置默认jdk版本

    在maven的默认配置中,对于jdk的配置是1.4版本,那么创建/导入maven工程过程中,工程中未指定jdk版本. 对工程进行maven的update,就会出现工程依赖的JRE System Lib ...

  8. jar包打补丁 jar -uf_windows下批处理指定不同jdk版本运行jar包

    点击上方关注订阅黑码教主获取更多精彩内容 新建run.bat文件 @echo offset JAVA_HOME=E:JDK8set CLASSPATH=.;%JAVA_HONG%libdt.jar;% ...

  9. Eclipse 中 Maven 项目默认JDK版本为1.5 的解决方法

    在 Eclipse 中 Maven project 的默认 JDK 版本是 1.5, 如果不在 settings.xml 或者 pom.xml 中显示的指出 JDK 版本,每次 右键项目--> ...

最新文章

  1. Python 3 —— 使用 PyMySQL 操作 MySQL8
  2. Dexposed:Android平台免Root无侵入AOP框架
  3. 原相机水印怎么改字_抖音/自媒体做影视二次剪辑,如何下载高清无水印视频?...
  4. SpringMVC子父容器源码剖析
  5. socket网络编程-字典
  6. 深入学习JavaScript: apply 方法 详解
  7. 多线程并发编程之构建自定义同步工具
  8. 游戏找不到DirectX的解决方法
  9. struts2上传 zip和rar文件类型
  10. python数据挖掘项目——航空公司客户价值分析(详解)
  11. 国外计算机论文翻译,计算机论文外文翻译
  12. Python爬取电影天堂指定电视剧或者电影
  13. java打印5排星号_Java-用星号打印菱形
  14. 工件SSM:war exploded: 部署工件时出错。请参阅服务器日志了解详细信息
  15. NRF51822 2.4G无线
  16. Redis - 启动
  17. BD(蓝光)的LPCM格式到PCM格式的转换
  18. 安卓 保存图片到相册
  19. windows7显示摄像头图标的方法
  20. 要直接,不要怂,谈钱才不伤感情

热门文章

  1. 智能手机战火连连,多年的纷争将何时终结?
  2. 为什么截图粘贴到WORD里看不见呢
  3. ECCV 2022 | 港中文MMLab:基于Transformer的光流
  4. Linux 批量无损压缩图片
  5. 最全微信产品相关文章
  6. rhel配置磁盘分区_linux系统安装细节及磁盘分区划分
  7. 练习练习练习~不断的练习
  8. 发那科冲压直线搬运机器人_FANUC 交流伺服电机βis 系列
  9. 【图解】如何击溃芝诺悖论
  10. 二相四线步进电机的一种四拍驱动时序