多个module实体类集合打一个jar包并上传至远程库

 

本章内容主要分享多个module中的实体类集合生成到一个jar包中,并且发布到远程库;这里采用maven-assembly-plugin插件的功能来操作打包,内容不长却贴近实战切值得拥有,主要节点内容如:

  • 多个module实体类集合打jar包
  • jar包打入本地库
  • jar包上传至远程库

多个module实体类集合打jar包

首先假设下我们拥有多个module,每个module中有一些接口或公用方法的参数实体和响应实体,再或者有公用枚举,此时为了合作方对接方便,我们需要吧这些个实体类、枚举、接口等集合到一个jar包中,提供给合作方使用;

这里我们可以在项目工程下再创建一个空的module,里面不用包含任何代码,但是需要在pom中加入assmebly插件如:

 1         <plugins>
 2             <plugin>
 3                 <artifactId>maven-assembly-plugin</artifactId>
 4                 <version>3.1.0</version>
 5                 <executions>
 6                     <execution>
 7                         <id>${project.artifactId}</id>
 8                         <phase>package</phase>
 9                         <goals>
10                             <goal>single</goal>
11                         </goals>
12                         <configuration>
13                             <appendAssemblyId>false</appendAssemblyId>
14                             <descriptors>
15                                 <descriptor>${project.basedir}/src/main/assembly/assembly.xml</descriptor>
16                             </descriptors>
17                         </configuration>
18                     </execution>
19                 </executions>
20             </plugin>
21         </plugins>

assmebly插件对应一个assembly.xml配置文件,该配置文件主要包含要打入的实体类,接口等的class类路径;没错我们主要通过吧class类文件加入到jar中,来完成我们开放的实体类等信息,assembly.xml文件信息如:

 1 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2           xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0
 3           http://maven.apache.org/xsd/assembly-2.0.0.xsd
 4           http://maven.apache.org/ASSEMBLY/2.0.0 ">
 5     <id>RELEASE</id>
 6     <formats>
 7         <format>jar</format>
 8     </formats>
 9     <includeBaseDirectory>false</includeBaseDirectory>
10     <fileSets>
11         <!-- 打包项目本身编译class文件 -->
12         <fileSet>
13             <directory>${project.build.directory}/classes</directory>
14             <outputDirectory></outputDirectory>
15         </fileSet>
16         <!-- api包class文件 -->
17         <fileSet>
18             <directory>${project.parent.basedir}/api/target/classes</directory>
19             <includes>
20                 <include>com/kuku/api/core/provider/**</include>
21             </includes>
22             <outputDirectory></outputDirectory>
23         </fileSet>
24         <!-- domain包class文件 -->
25         <fileSet>
26             <directory>${project.parent.basedir}/domain/target/classes</directory>
27             <includes>
28                 <include>com/kuku/domain/master/**</include>
29                 <include>com/kuku/domain/work/dao/**</include>
30                 <include>com/kuku/domain/work/model/**</include>
31                 <include>entity/**</include>
32             </includes>
33             <outputDirectory></outputDirectory>
34         </fileSet>
35         <!-- common包class文件 -->
36         <fileSet>
37             <directory>${project.parent.basedir}/common/target/classes</directory>
38             <outputDirectory></outputDirectory>
39         </fileSet>
40         <!-- 打包resources下的配置文件 -->
41         <fileSet>
42             <directory>${project.basedir}/src/main/resources</directory>
43             <outputDirectory>conf</outputDirectory>
44             <filtered>true</filtered>
45             <includes>
46                 <include>static/**</include>
47                 <include>templates/**</include>
48                 <include>**/*</include>
49             </includes>
50         </fileSet>
51     </fileSets>
52     <!--<dependencySets>-->
53         <!--<dependencySet>-->
54             <!--<useProjectArtifact>false</useProjectArtifact>-->
55             <!--<outputDirectory>lib</outputDirectory>-->
56             <!--<scope>runtime</scope>-->
57         <!--</dependencySet>-->
58     <!--</dependencySets>-->
59 </assembly>

来到此处我们配置就完成了,上面主要目的是去target/classes目录下查找生成的.class文件打入jar包中,具体效果就不展示了各自尝试吧。

jar包打入本地库

如果没有远程库或权限,可以考虑把jar包install到本地工程库,通常情况下通过mvn install即可完成;本地库路径一般在安装mvn指定,成功install后可以看到这几种文件:

jar包上传至远程库

通常公司内部或组内协助完成项目,都会吧接口实体、枚举、公用的方法等打包放入公司内网的库中;假如我们有上传包到内网库的权限,可以首先配置mvn的settings.xml的servers节点:

1 <servers>
2     <server>
3         <id>release</id>
4         <username>shenniu003</username>
5         <password>shenniu003</password>
6     </server>
7 </servers>

然后在项目pom中增加如下配置:

1     <distributionManagement>
2         <repository>
3             <id>release</id>
4             <url>http://102.0.102.10/nexus/content/repositories/releases/</url>
5             <name>provider</name>
6         </repository>
7     </distributionManagement>

再然后执行mvn deploy命令(idea可以鼠标右键deploy选择run),该命令会打项目的jar并上传到指定的url内网库地址上。

转载于:https://www.cnblogs.com/wangrudong003/p/11235481.html

Cursor Skills:从代码补全到工作流编排的临界点 Cursor Skills 是一种基于自然语言触发、契约式定义的开发工作流自动化机制,其核心在于将用户意图映射为可执行的 Shell/CLI/API 操作。它非传统 IDE 插件,而是通过 `agents.md` 文件实现的轻量级智能代理调度协议,融合了意图识别、参数提取与动作执行三层结构。该技术显著降低多工具切换成本,提升中高级开发者在 API 调试、日志处理、文档生成等场景下的闭环效率。尤其适配 Java/Spring Boot、嵌入式(如 STM32)、CI/CD 集成等工程实践,是当前 Curso 阅读详情

相关推荐

解决Android构建错误:Could not resolve all files for configuration ‘:app:androidJdkImage‘

在Android开发中,Gradle作为核心构建工具,其依赖解析机制是项目编译打的基础。它通过声明依赖配置远程下载所需构件来确保构建环境的一致性。Android Gradle Plugin(AGP)为了统一编译环境,引入了捆绑特定版本JDK的机制,通过`androidJdkImage`这一特殊配置来管理JDK镜像的下载与使用。这一设计能有效避免因本地JDK版本差异导致的构建问题,对于保障团队协作和持续集成的稳定性具有重要价值。然而,当网络环境不佳或仓配置不当时,该配置的解析容易失败,从而中断整个

weixin_33714884的博客 465

SpringBoot多模块打成jar/war方式

如果和我一样是刚接触SpringBoot多模块开发的小白的话估计是会有点懵逼吧,打打了老半天也跑不起来,怎么也找不到正确的打姿势,所以我觉得还是有必要把作为小白的我用 SpringBoot多模块打成jar/war 成功的经历记录一下,或许以后也会用到的 以下会用到 idea 编辑器,eclipse的话应该也差不多 首先我们假设我们有三个模块,分别为 project_parent project_service project_web 其中project_parent 是一个聚合pom工程,是另外两个子

weixin_44504894的博客 5342

Windows与Linux系统后门深度检测实战指南:从Rootkit到内存马

在网络安全领域,后门检测是保障系统持久安全的核心环节。其基本原理在于识别攻击者为维持权限而植入的隐蔽访问通道,这些通道往往绕过常规认证机制。从技术价值看,有效的后门检测能直接切断攻击者的持续控制,防止数据泄露与横向移动,是应急响应中从“治标”转向“治本”的关键。在实际应用场景中,无论是服务器运维、安全审计还是攻防演练,都需要系统化的方法来应对Rootkit、内存马等高级威胁。本文聚焦于实战,提供了一套涵盖Windows和Linux系统的分层检测体系与具体操作命令,旨在帮助工程师构建从账户、持久化机制到进程内

416

将 Maven 中的多模块项目只打成一个 JAR

将 Maven 中的多模块项目打成一个 JAR 假设读者已经编写好了一个可以在编译器中运行的一个 Maven 多模块项目。对于 Maven 多模块项目,应该首先有一个父 pom,它的属性 packaging 为 pom。而它的一个不成为其它模块的父模块的子模块,其属性 packaging 应该为 jar 或 war。 将上面的 Maven 项目打成一个 JAR ,可以使用插件 maven-assembly-plugin。它有一个目标 single 可以完成此任务。使用该插件打出来的 JAR

暗诺星刻的博客 2万+

Java项目分模块打jar

这段时间接到了一个任务,就是将项目按照模块打jar。这样的目的是: 1.按照模块分别打,方便升级 2.模块分之后,哪个模块修改了,就去单独更新对应模块,不用担心整体更新之后,由于其他模块的修改导致项目运行异常 在网上搜寻了很久没找到了一些相关文章,但是没有详细介绍按照模块打jar的相关文章。经过我这几天的摸索,实现了相关功能。 首先说下思路: 我们之前接触到的打方式基本有两种:1.将整个项目打一个完整jar运行 2.把项目打成war,丢到tomcat中运行。 multi-mo

天麟江的博客 4445

spring boot中多个module一个jar启动类

在启动类的module中添加spring-boot-maven-plugin插件,引入其他module即可打一个启动jar,运行parent的clean、compile、install、package即可

qq_43813937的博客 3726

idea多modules组成的项目如何打jar

然后再要打接口模块clean然后install。在此模块下得到的jar就可以部署了。此模块打jar含了其他module。首先在父模块clean然后install。

MinisterZ的博客 1455

idea 上传jar远程_多个module实体类集合一个jar上传远程

本章内容主要分享多个module中的实体类集合生成到一个jar中,且发布到远程;这里采用maven-assembly-plugin插件的功能来操作打,内容不长却贴近实战切值得拥有,主要节点内容如:多个module实体类集合jarjar打入本地jar上传远程多个module实体类集合jar首先假设下我们拥有多个module,每个module中有一些接口或公用方法的参数实体和...

weixin_42349277的博客 728

JavaCV依赖管理实战:解决org.bytedeco网络、编译与离线部署难题

Java生态中集成计算机视觉与音视频处理功能时,JNI(Java Native Interface)技术是实现高性能跨语言调用的核心桥梁。其原理是通过Java层声明本地方法,在运行时动态加载C/C++编写的本地(如OpenCV、FFmpeg),从而突破JVM性能瓶颈,直接操作硬件与系统资源。这一技术为Java带来了接近原生的图像处理、视频编解码等能力,在安防监控、医疗影像、工业质检等对实时性要求高的应用场景中价值显著。然而,JNI的工程实践面临依赖管理的复杂性挑战,尤其体现在org.bytedeco这类

weixin_34194087的博客 436

JavaWeb知识点

1.Maven中的仓用来存储什么的?Maven的仓是用来存储和管理jar的2.Maven中有哪几类仓?查找依赖(jar)的顺序是什么样的?本地仓(1)远程(2)中央仓(3)

ql200106的博客 278

Java从零到入门:30小时实战指南与核心技巧

Java作为企业级开发的主流语言,其'一次编写,到处运行'的特性使其在金融、电商等领域广泛应用。理解Java核心语法、面向对象编程和JVM内存管理是掌握这门语言的基础。通过实战项目如天气查询系统的开发,可以快速应用集合框架、多线程发等关键技术。针对新手常见误区,如字符串拼接性能问题和异常处理原则,提供了优化方案。从环境配置到现代Java特性,本指南覆盖了Java开发全流程的关键知识点,帮助开发者在30小时内建立完整的知识体系。

weixin_30727835的博客 480

Spring Boot高级特性实战:从自动装配到生产级应用部署

Spring Boot作为Java领域主流的微服务框架,其核心价值在于通过自动装配机制实现了约定大于配置的开发理念。理解其自动装配原理,掌握条件化装配与自定义Starter开发,是构建可复用组件和解决Bean冲突的关键。在生产环境中,配置管理、优雅停机和健康检查是保障应用稳定性的基础技术。面对大文件上传、分布式事务等复杂场景,需要结合流式处理与柔性事务方案来确保系统性能与数据一致性。本文聚焦Spring Boot高级应用,深入探讨自动装配、生产部署优化及分布式事务处理等核心实践,帮助开发者构建健壮高效的企业

weixin_34234829的博客 306

Java动态代码执行安全指南:Janino三大致命陷阱与纵深防御实战

动态代码执行是Java开发中实现高度灵活业务逻辑的核心技术,它允许程序在运行时编译执行代码,广泛应用于规则引擎、公式计算和低代码平台等场景。其原理是通过编译器(如Janino)将源码字符串动态转换为字节码,从而赋予应用实时演化的能力。这项技术的核心价值在于突破静态代码的限制,实现业务逻辑的动态配置与热更新。然而,其强大的能力也伴随着严峻的安全挑战,尤其是在涉及用户输入的场景下。本文聚焦于动态Java代码执行中最关键的安全实践,深入剖析了代码注入、类路径污染和资源耗尽三大核心风险,构建了一套从输入净化、沙

weixin_30487201的博客 338

大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建四

本篇安装版本Flume1.7sqoop,一定要是1.4.7版本!!!我下面的安装用的1.4.6的,大家搭建的时候自己换一下,这是因为1.4.7是最后一个稳定版本,往后的版本是sqoop尝试底层架构调整,但是失败了,导致后面的版本不完善,有重大bug,且现在sqoop已经停止更新了。

别人笑我太疯癫,我笑他人看不穿。 697

【Android面试】Gradle专题

Grradle面试专题

studyForMokey的博客 668

SpringBoot3+VUE2前后端分离CMS系统实战解析

前后端分离架构是现代Web应用的主流形态,通过后端提供统一API、前端独立渲染的方式,实现了开发解耦与部署灵活。在实际工程中,权限控制与数据安全是核心环节,JWT等无状态认证机制有效支撑了分布式场景下的用户会话管理。内容管理系统(CMS)作为典型应用,涉及文章发布、分类管理、角色权限等复杂业务,需要合理设计数据表结构与接口分层。从技术选型看,SpringBoot3基于JDK17带来性能与生态升级,VUE2凭借成熟组件仍在存量项目中占据重要地位,二者组合适合快速搭建可落地的管理系统。本文以一个基于Spri

weixin_34725745的博客 320

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

AI Agent实战项目合集:从入门到精通的100个开发案例

AI Agent(智能体)作为人工智能领域的重要分支,其核心在于通过感知、规划、决策和执行等模块,模拟人类或自主完成特定任务。其技术原理通常基于大语言模型(LLM)与工具调用、记忆、规划等组件的结合,实现从简单问答到复杂工作流自动化的能力。这种技术架构的价值在于能够将AI能力无缝集成到实际业务中,提升自动化水平和决策效率。在应用场景上,AI Agent广泛适用于智能客服、自动化办公、数据分析、代码生成以及企业级RAG(检索增强生成)系统构建。本文聚焦于一个含100个实战项目的学习资源合集,旨在通过覆盖Sp

weixin_30522095的博客 307

【notes6】linux命令/工具,systemd,文件操作,动静态,信号,socket,std&boost,raii,智能指针,引用,完美转发,数据结构,类和对象,python

apt install python3-pip --fix-missing(断开vpn,cp /etc/apt/sources.list /etc/apt/sources.list.bak,python3 -m pip install --upgrade pip,apt-get update,pip install 名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com)如下设置win账号,因为默认禁止空密码登录。

持续更新ing... 6722
上一篇: vue中添加jQuery
下一篇: Eclipse 或者 Myeclipse 提示选择工作空间设置
weixin_30843605
博客等级 码龄11年 125粉丝 774原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值