本文记录实际使用maven遇到哪些问题,以及解决方案
一.单体maven项目main入口不会打包到jar(就是一个最普通的jar项目,不是springboot)
默认打包生成的jar是不能够直接运行的,因为带有main方法的类信息不会添加到manifest中(打开jar 文件中的META-INF/MANIFEST. MF文件,将无法看到Main-Class 一行)。为了生成可执行的jar文件,需要借助maven-jar-plugin配置该插件如下:
<build>
<plugins>
<!-- 配置打包,并配置MainClass, 但不将依赖包打包,会出现找不到依赖的异常 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- MANIFEST.MF 中 Class-Path -->
<classpathPrefix>lib/</classpathPrefix>
<!-- main方法路径 --> <mainClass>cn.zoom.wqz.filter.Application</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
这里只是最简单的java程序打包,还有其他情况看https://www.jb51.net/article/215921.htm
或者根据实际情况去google
二spring boot使用maven的package命令打出来的包,却不包含依赖的jar包
问题原因:打包时使用了maven默认的maven-jar-plugin插件,而不是spring-boot-maven-plugin插件,它只会打包当前项目的代码
解决方法:
方法1. pom中必须配置spring-boot-maven-plugin插件,而且必须指定需要执行的目标构建
这种方式适用于,没有继承spring-boot-starter-paren,而是在dependencies模块中引用的
spring-boot-starter-parent
复制代码:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
复制代码
方法2. 使用spring boot的parent来进行依赖管理,则不用指定执行构建的目标
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
</plugin>
</plugins>
</build>
三.为什么打包会有2个jar?
.origin后缀的jar包只包含当前项目源代码没有依赖jar包代码
所以需要spring-boot-maven-plugin的repackage打成可执行jar(也就是包含依赖jar文件)
具体看下面
https://www.jb51.net/article/198349.htm
https://wangsong.blog.csdn.net/article/details/95180256
四.maven 使用systemPath导入本地jar,使用package打包,java -jar运行找不到类?
https://blog.csdn.net/qq_38140292/article/details/125452482
build标签详解
https://heavy_code_industry.gitee.io/code_heavy_industry/pro002-maven/chapter09/verse04.html
maven入门
b站尚硅谷maven2022最新视频
https://www.bilibili.com/video/BV12q4y147e4?
maven实战 pdf一书中也讲解了很多知识
看到文章末尾的,可以看下的我的程序人生这篇文章,主要是讲我在编程这条路上的经历,祝愿对你有用,感谢!