千家信息网

maven多模块项目怎么对外输出为一个构件

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,本篇内容介绍了"maven多模块项目怎么对外输出为一个构件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2024年11月25日maven多模块项目怎么对外输出为一个构件

本篇内容介绍了"maven多模块项目怎么对外输出为一个构件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

台式机生产线我的maven代码工程 xxx
显示器xxx-web
主机xxx-app
键盘xxx-domian
鼠标xxx-infrastration
台式机xxx-all.jar

虽然不能完全对应的上,我拿开源的dubbo描述一下我的问题。

dubbo开发者: dubbo的开源项目采用maven多模块开发的,内部模块分的非常细。

充分利用了台式电脑的分模块设计思想。

dubbo使用者: 我只需要引入一个dubbo-all的依赖即可使用dubbo;

好比台式机的用户,我只需要一个可使用的台式机,按照使用手册来即可,内部的东西我不想知道;

只需要引入坐标:

       com.alibaba      dubbo                 2.7.0      true    

背景

最近的业务开发工作碰到过一个类似的问题。

问题回答
where are we?现状公共组件程序员开发采用多模块开发一个组件,业务程序员希望只引用一个组件
where are we go?目的多模块开发一个公共组件,业务项目只需要引入一个模块
how we go there?实现路径maven-shade-plugin

实现路径

shade

shade提供了一个把你的maven多模块构件和构件的依赖打包为一个超级jar包的能力。

它绑定到了maven生命周期的package阶段,提供了唯一的mavn的goal指令shade:shade

它的系统运行环境要求是:

运行需求说明
maven3最低maven3
jdk7最低jdk7
内存和磁盘无最低空间需求

用法如下:

                 org.apache.maven.plugins     maven-shade-plugin     3.2.4                    org.apache.maven.plugins    maven-shade-plugin    3.2.4                        package             shade                     

常见配置属性:

ApacheLicenseResourceTransformer

防止证书重复

ApacheNoticeResourceTransformer

准备合并通知

AppendingTransformer

作为资源添加

ComponentsXmlResourceTransformer

聚合components.xml 从

DontIncludeResourceTransformer

排除资源文件

IncludeResourceTransformer

包含的资源文件

ManifestResourceTransformer

manifest的条目

ServicesResourceTransformer

合并meta-info/services 资源

XmlAppendingTransformer

添加xml内容作为一个xml资源

dubbo

主要看dubbo-all模块的配置:

    4.0.0            org.apache.dubbo        dubbo-parent        ${revision}        ../pom.xml        dubbo    jar    dubbo-all    The all in one project of dubbo                        org.apache.dubbo            dubbo-config-api            ${project.version}            compile            true                                                    org.apache.maven.plugins                maven-shade-plugin                                                            package                                                    shade                                                                            true                            false                                                                                                com.alibaba:hessian-lite                                                                                                                                                org.apache.dubbo:dubbo-config-api                                                                                                                                                                                                                                    META-INF/dubbo/internal/org.apache.dubbo.common.compiler.Compiler                                                                                                                                                                                META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory                                                                                                                                                                                                org.apache.dubbo:dubbo                                                                                                                    com/**                                        org/**                                                                                META-INF/dubbo/**                                                                                                                                                                                    

为控制代码占用太多内容,上面贴的pom配置为删除了大量相同或者类似的节点。 下面拆解一下它的结构:

核心节点说明
dependency直接依赖,即包含的当前工程中的模块
pluginshade

shade的核心配置

配置说明(见名知意,先猜测)
phase挂接在maven的生命周期的package阶段
goal提供唯一的goal指令 shade
createSourcesJar是否创建源码到jar包中,方便ide直接查看到源码
promoteTransitiveDependencies是否打包间接依赖
artifactSet-includes-include包含的子模块或者排除的子模块
transformers-transformer-resource转换器配置
excludes>-filter过滤器中排出某些文件

具体看上面的代码。

"maven多模块项目怎么对外输出为一个构件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0