maven2打包不同jdk版本的包
通常在一些特别情况下,我们需要为单独某一个构件打包多个不同jdk版本的包,用来支持不同的jdk,基于maven我们就可以很方便的做到这点。
1、在项目的pom文件中加入如下配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cc.mzone</groupId>
<artifactId>blog</artifactId>
<packaging>jar</packaging>
<version>0.1</version>
<url>http://www.mzone.cc</url>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>${jar.source}</source>
<target>${jar.target}</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- 这里省略依赖 -->
</dependencies>
<properties>
<!-- 这里省略属性 -->
</properties>
<profiles>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<jar.source>1.6</jar.source>
<jar.target>1.6</jar.target>
</properties>
</profile>
<profile>
<id>jdk15</id>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>jdk15</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<properties>
<jar.source>1.5</jar.source>
<jar.target>1.5</jar.target>
</properties>
</profile>
</profiles>
</project>
2、然后执行命令打包
# mvn clean jar # mvn clean jar -P jdk15
第一条命令打包使用默认的profile,编译的版本是1.6,生成的文件是blog-0.1.jar;而第二条命令打包指定使用jdk15这个profile,编译版本是1.5,生成的文件是blog-0.1-jdk15.jar。
3、项目中引用
对于项目中的引用,可以使用如下依赖写法:
<!-- 引用1.6编译版本 -->
<dependency>
<groupId>cc.mzone</groupId>
<artifactId>blog</artifactId>
<version>0.1</version>
</dependency> <!-- 引用1.5编译版本 -->
<dependency>
<groupId>cc.mzone</groupId>
<artifactId>blog</artifactId>
<version>0.1</version>
<classifier>jdk15</classifier>
</dependency>
总结分析,为了达到对同一个构件使用不同的编译版本,我们综合使用了maven中的profile、classifier技术,按照我这里给出的例子,做法可以归纳为以下几点:
1、在项目的pom文件中定义多个profile,每个profile规定一个编译版本;
2、在profile中指定插件maven-jar-plugin的classifier配置,这个是指定筛选器的名称,即最后要附加在jar包名称后面的,比如这里的jdk15;
3、打包时指定不同的profile打包不同的版本,通过-P参数指定profile进行编译打包;
4、在其他项目中使用该构件时通过配置classifier属性来筛选不同的版本;
技术因需要而改变,自己备份下,也希望对大家有帮助。
maven2打包不同jdk版本的包的更多相关文章
- 记一次IDEA 打包环境JDK版本和生产环境JDK版本不一致引发的血案
问题描述: 本地开发环境idea中能正常运行项目,而idea打war包到Linux服务器的Tomcat下却不能正常运行,报如下错误: 09-Aug-2019 08:56:06.878 SEVERE [ ...
- Android 打包出现jdk版本错误的问题
Android 打包出现 jdk 版本错误的问题,本质上是 SDK 的问题,与 JDK 无关.如果 SDK 的 API 是24或者更高,就要求 jdk 1.8,我这里指定的 API 是22,所以去勾选 ...
- 关于maven打包与jdk版本的一些关系
最近让不同JAVA版本的容器maven打包折腾的不行,终于理出了一点头绪.在这里记录下备忘. 1. Maven与jdk版本的关系 先明确一个概念,关高版本JDK运行maven,是可以打出低版本的JAV ...
- JDK源码包结构分类
最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*.sun.*.org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正! Jre库包含的jar文件(jdk1.6) ...
- Eclipse打war包方法以及Eclipse移植项目时JDK版本不匹配Project facet Java version 1.7 is not supported
打包时: 在项目上右键选择Export,如图: 然后选择WAR file,如图所示.接着再:其中web projecct为打出来包的名字, Destination,打包后存的位置,点击Browse.. ...
- 使用 "java -jar"命令启动jar包时报不支持的jdk版本异常
在使用java -jar 命令启动一个jar包的时候,提示版本不支持: [root@hadoop01 eureka-server-master]# java -jar xuebusi-eureka-s ...
- 查看jar包的jdk版本并降级
用解压工具打开jar包(例子都是用7zip) 进入到META-INF目录,查看MANIFEST.MF文件,查看Bulid-Jdk,下图就为1.7.0_55版本的JDK,这就表示jetty-serv ...
- jar包、jdk版本、兼容性
对jar包.jdk版本,以及不同jdk版本的jar包的兼容性有一些疑问,搜集一些资料于此 查看jar包的jdk版本 查看.jar包中的META-INF\MANIFEST.MF Build-Jdk: 1 ...
- 报错:Unsupported major.minor version 52.0 (jar包对不同JDK版本的兼容性问题:)
Unsupported major.minor version 52.0 这类错误是因为Java版本不一致造成的,在高版本的JDK(1.8)环境中编译JAR包,然后JAR在低版本的JVM(1.6)中运 ...
随机推荐
- C语言:关于socket的基础知识点
/** * ---结构体--- * * #include <sys/socket.h> * struct sockaddr { * unsigned short sa_family; * ...
- redis-cache中的callback
这个是mybatis/redis-cache中关键类 RedisCache 的源码 /** * Copyright 2015 the original author or authors. * * ...
- ESXi 6.0 配置
ESXi 6.0 添加静态路由 首先打开ESXi的SSH服务, 在Configuration -> Security Profile -> Services , start SSH 用管理 ...
- Entity Framework 迁移命令 详解
一.Entity Framework 迁移命令(get-help EntityFramework) Enable-Migrations 启用迁移 Add-Migration 为挂起的Model变化添加 ...
- 带参数的CLR存储过程
昨天有学习<简单创建与布署CLR存储过程>http://www.cnblogs.com/insus/p/4371762.html,知道怎样创建以及布署至SQL中去. 下面这个范例是实现CL ...
- Hibernate SQL Dialect 方言
RDBMS Dialect DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB ...
- 转:用WCAT进行IIS压力测试
Microsoft的Web容量分析工具(WCAT) 是测试你的客户-服务器网络配置的必备工具.这个工具在你的网络上对多种工作量的场景进行仿真,允许你确定你的网络和服务器的最佳配置.WCAT是专门为 评 ...
- WPF中的数据验证
数据验证 WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理. 数据转换和数据验证便是在数据从源到目标 or 从目标到源 的时候对数据的验证和转换. V ...
- 解决nf_conntrack: table full, dropping packet问题
" > /proc/sys/net/nf_conntrack_max iptables -t raw -A PREROUTING -p tcp -m tcp --dport -j NO ...
- unity3d 扩展NGUI Tweener —— TweenTime
这是今天做的一个小功能 策划想要一个时间滚动效果 那就搞呗!思路和之前写的tweenFillAmount一样 传送门:http://www.cnblogs.com/shenggege/p/479892 ...