zoukankan      html  css  js  c++  java
  • maven2打包不同jdk版本的包

    作者:243573295

    通常在一些特别情况下,我们需要为单独某一个构件打包多个不同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属性来筛选不同的版本;

  • 相关阅读:
    LeetCode 121. Best Time to Buy and Sell Stock
    LeetCode 221. Maximal Square
    LeetCode 152. Maximum Product Subarray
    LeetCode 53. Maximum Subarray
    LeetCode 91. Decode Ways
    LeetCode 64. Minimum Path Sum
    LeetCode 264. Ugly Number II
    LeetCode 263. Ugly Number
    LeetCode 50. Pow(x, n)
    LeetCode 279. Perfect Squares
  • 原文地址:https://www.cnblogs.com/lxl57610/p/7793344.html
Copyright © 2011-2022 走看看