lichangben

maven本地安装jar包,解决没有pom的问题

maven本地安装jar包,解决没有pom的问题

问题主要出现在 本地安装的jar中引用了第三方依赖,新项目引用本地安装的jar,导致jar中的依赖没有添加进来。

  1. 将jar导入本地maven仓库
mvn install:install-file -Dfile=D:\phdp-payment-1.0.0.jar -DgroupId=com.phdp -DartifactId=phdp-payment -Dversion=1.0.0 -Dpackaging=jar -DgeneratePom=true -DcreateChecksum=true
  1. pom引入jar
<dependency>
	<groupId>com.phdp</groupId>
	<artifactId>phdp-payment</artifactId>
	<version>1.0.0</version>
</dependency>

这时候发现pom文件中是以下内容 POM was created from install:install-file

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.phdp</groupId>
  <artifactId>phdp-payment</artifactId>
  <version>1.0.0</version>
  <description>POM was created from install:install-file</description>
</project>

发现jar中的依赖没有引用到项目中

解决方法:执行下面这个命令

mvn org.apache.maven.plugins:maven-install-plugin:3.1.1:install-file  -Dfile=D:\phdp-payment-1.0.0.jar 

安装带有自定义POM

执行完成之后再看一下 jar的pom,到这里问题就解决啦


在解决这些问题的时候,查到了胖包和瘦包的概念

打包分为瘦包和胖包。‌

  • 瘦包:‌瘦包指的是直接打包项目,‌但不包含依赖包,‌仅打包出项目中的代码到JAR包中。‌这种打包方式产生的文件较小,‌只包含项目自身的代码,‌不包含运行时所需的依赖。‌瘦包没有指定主类,‌需要在使用时自行指定。‌
  • 胖包:‌胖包则是将maven项目中的依赖包和项目打为一个包。‌这种打包方式产生的文件较大,‌因为它包含了项目运行所需的所有依赖,‌包括类库、‌框架等,‌可以直接运行而无需额外的依赖配置。‌胖包的打包过程采用的是spring的标准,‌使用spring boot提供的打包插件完成。‌

这两种打包方式的选择取决于项目的具体需求和使用场景。‌如果项目需要在没有安装所有依赖的环境中运行,‌那么选择瘦包可能更为合适;‌如果项目需要在任何环境中都能直接运行,‌那么选择胖包更为合适

  1. 当你引用胖包时,你不能使用 Maven 的 <exclusions> 标签来排除不需要的依赖项,因为 Maven 的依赖排除机制是基于 Maven 的依赖管理模型的,而胖包已经绕过了这个模型。

  2. <exclusions>问题:
    A依赖B,B依赖C,那么A就间接依赖C,如果在A依赖B时排除C,那么B中还有C吗?
    网上回答:在A项目中排除对C项目的依赖只会影响A项目及其依赖之间的依赖关系,而不会
    改变B项目内部的依赖结构
    A项目中就没有C了,B也在A项目中,所以B报错找不到C

posted @ 2024-07-19 16:54  码小白很犇  阅读(395)  评论(0)    收藏  举报