欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

maven配置打包两种不同jdk的jar包,mavenjdk,有时候我们定义jar包,

来源: javaer 分享于  点击 36958 次 点评:192

maven配置打包两种不同jdk的jar包,mavenjdk,有时候我们定义jar包,


有时候我们定义jar包, 需要即提供给jdk1.6的用户,也给jdk1.7的用户, 这时候我们可以通过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>cn.outofmemory</groupId>  <artifactId>share-code</artifactId>  <packaging>jar</packaging>  <version>0.1</version>  <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>jdk17</id>      <build>        <plugins>          <plugin>            <artifactId>maven-jar-plugin</artifactId>            <executions>              <execution>                <phase>package</phase>                <goals>                  <goal>jar</goal>                </goals>                <configuration>                  <classifier>jdk17</classifier>                </configuration>              </execution>            </executions>          </plugin>        </plugins>      </build>      <properties>        <jar.source>1.7</jar.source>        <jar.target>1.7</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.7编译版本 --><dependency>  <groupId>cc.mzone</groupId>  <artifactId>blog</artifactId>  <version>0.1</version>  <classifier>jdk17</classifier></dependency>

总结分析,为了达到对同一个构件使用不同的编译版本,我们综合使用了maven中的profile、classifier技术,按照我这里给出的例子,做法可以归纳为以下几点:

在项目的pom文件中定义多个profile,每个profile规定一个编译版本;在profile中指定插件maven-jar-plugin的classifier配置,这个是指定筛选器的名称,即最后要附加在jar包名称后面的,比如这里的jdk15;打包时指定不同的profile打包不同的版本,通过-P参数指定profile进行编译打包;在其他项目中使用该构件时通过配置classifier属性来筛选不同的版本;
相关栏目:

用户点评