`
fox.tan
  • 浏览: 63246 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Maven 管理不同jdk版本的jar,war,eba

 
阅读更多

在之前的项目中虽然用到了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兼容jdk1.7版本

    **Maven的版本兼容性**:Maven的不同版本可能对JDK的要求不同。例如,较新的Maven版本可能需要更高版本的JDK才能运行。然而,"Maven 3.0.5"特别强调了与JDK 1.7的兼容性,这意味着使用此版本的Maven可以顺利处理基于...

    IDEA+Maven导入新包JDK版本冲突问题

    IDEA 和 Maven 是 Java 开发中常用的集成开发环境和项目管理工具,但是当我们在 IDEA 中使用 Maven 管理项目时,可能会遇到 JDK 版本冲突问题。今天我们将讨论如何解决这个问题。 一、问题背景 ---------------- ...

    Javamaven全局配置jdk版本共3页.pdf.z

    `这样的工具来方便地切换不同版本的JDK,它们可以帮助我们在不同项目间轻松切换JDK,同时保持Maven配置的简洁。 总结来说,配置Maven全局JDK版本主要是通过修改`settings.xml`文件中的`&lt;toolchains&gt;`或`&lt;profiles&gt;`...

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

    在Eclipse中使用Maven创建项目时,你可能会遇到一个常见的问题,即默认的JDK版本被设置为较旧的1.5。这可能会导致一些现代Java特性无法使用,或者与你的开发环境不兼容。以下是解决这个问题的详细步骤: 首先,我们...

    jdk11_maven3.6_win_x64.zip

    标题“jdk11_maven3.6_win_x64.zip”指的是一个包含了Java Development Kit (JDK) 11的Oracle版本以及Maven 3.6的Windows x64平台安装包。这个压缩文件是为了在64位Windows操作系统上同时安装和使用这两个重要的Java...

    Javamaven全局配置jdk版本共3页.pdf.zip

    【Java Maven 全局配置 JDK 版本详解】 在Java开发中,Maven是一个不可或缺的构建工具,它帮助我们管理项目依赖、构建流程以及构建输出。然而,Maven的配置中,选择合适的JDK版本至关重要,因为这直接影响到项目的...

    Maven引入本地Jar包并打包进War包中的方法

    "Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...

    eclipse更新maven,jdk改变解决办法

    eclipse更新maven时,项目原本设定的jdk版本发生改变,这是由于maven的编译器插件的默认设置所致。编译器插件用来编译项目的源文件,从3.0版本开始,默认编译器是javax.tools.JavaCompiler,如果你想强制性的让插件...

    apache-maven-3.3.9,需要jdk7及以上版本

    总结来说,Apache Maven 3.3.9是一个强大的Java项目管理工具,需要JDK 7或以上版本支持。它的依赖管理、预定义生命周期和插件系统简化了项目构建和维护,使得开发团队能够更专注于编写业务代码,而不是解决构建问题...

    MAVEN-3.5.4,需要jdk7及以上版本

    **正文** Maven是Java开发领域中不可或缺的项目管理和构建工具,它通过自动化构建过程,帮助开发者管理依赖、编译...确保正确安装JDK 7或更高版本后,你可以充分利用Maven 3.5.4的功能来提高项目管理的效率和质量。

    maven配置全局的jdk和配置局部的jdk

    **局部JDK配置**是指在特定项目的`pom.xml`文件中进行设置,这种方式适用于需要为特定项目指定不同Java版本的情况。 ##### 配置步骤 1. **定位项目配置文件:**打开项目的`pom.xml`文件。 2. **添加Build配置:**...

    maven3.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-3.5.4+jdk1.8打包备用。

    JSONObject相关jar包和maven管理jar包

    描述提到“JSONObject对象相关的jar包依赖,一共有6个”,这意味着可能有六个不同的jar文件,每个都可能包含特定功能或针对不同版本的兼容性。在Java项目中,jar包是包含了可执行代码的归档文件,开发者通常会将它们...

    eclipse 创建maven项目设置默认jdk版本.rar

    JDK(Java Development Kit)是Oracle提供的Java编程工具集,包含了Java编译器、运行时环境以及各种API,不同版本的JDK可能支持不同的Java语言特性。 首先,确保你已经安装了Eclipse IDE和Maven。如果还没有安装,...

    IDEA-Maven项目的jdk版本设置方法

    IDEA-Maven项目jdk版本设置方法 在 Intellij Idea 中,设置 JDK 版本是一个非常重要的步骤,因为如果不正确地设置 JDK 版本,可能会导致语法错误。在 IDEA-Maven 项目中,我们需要设置两个地方的 JDK 版本:...

    maven集成jetty所需jar包maven-jetty-plugin,多版本

    本文将详细讨论如何将Jetty与Maven进行集成,并介绍关键的`maven-jetty-plugin`插件及其不同版本。 1. Maven与Jetty集成的意义: Maven通过其强大的依赖管理功能,使得项目构建变得简单和规范。而Jetty作为轻量级...

    maven打包 maven打jar包详细步骤

    而`maven-install-plugin`则负责将打包后的文件(无论是JAR还是WAR)放入本地Maven仓库,便于其他项目依赖。 对于`maven-jar-plugin`,它是Maven用于创建JAR文件的插件。你可以通过配置这个插件来指定主类、排除...

    jdk8、maven3.9安装包

    Java Development Kit...JDK为编写和运行Java程序提供了基础环境,而Maven则通过自动化构建流程和强大的依赖管理,极大地提升了开发效率和项目的可维护性。正确安装并配置这两个工具,是顺利进行Java开发的第一步。

Global site tag (gtag.js) - Google Analytics