在之前的项目中虽然用到了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版本对应存在问题,本版本对应jdk1.7,相当稳定~
apache-maven-3.3.9,需要jdk7及以上版本 apache-maven-3.3.9,需要jdk7及以上版本
jdk11 oracle windows x64版本 加 maven3.6
【Java】maven全局配置jdk版本共3页.pdf.zip
【Java】maven全局配置jdk版本共3页.pdf.zip
本篇文章主要介绍了Maven引入本地Jar包并打包进War包中的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
引入新的依赖包代码报-JDK版本冲突!解决
MAVEN-3.5.4,需要jdk7及以上版本 MAVEN-3.5.4,需要jdk7及以上版本
maven配置全局的jdk和配置局部的jdk
eclipse 创建maven项目设置默认jdk版本.rar
JSONObject对象相关的jar包依赖,一共有6个;还有maven环境下管理的jar包
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!
maven-3.5.4+jdk1.8打包备用。maven-3.5.4+jdk1.8打包备用。maven-3.5.4+jdk1.8打包备用。maven-3.5.4+jdk1.8打包备用。maven-3.5.4+jdk1.8打包备用。
maven集成jetty必须jar包maven-jetty-plugin,内含多个版本
apache-maven-3.5.4-bin apache-tomcat-8.5.32-windows-x64 jdk-8u111-windows-x64
JDK环境配置+apache-maven-3.6.3+1.8JDK+apache-tomcat-9.0.39 超级详细的Java环境配置教程 对于很多初学者来说,我想可能很多人都会遇到JDK环境变量的配置问题。明明就是按照度娘上的教程去一步步配置的,但还是...
各版本jar查找网址: https://search.maven.org/search?q=com.dameng maven依赖配置示例: <groupId>com.dameng</groupId> <artifactId>DmJdbcDriver18 <version>8.1.1.193 </dependency>
maven java 模板Linux环境 Java open-jdk17