IDEA添加本地jar包并使用maven打包
今天接手一个一年多前的自己做的项目,当时自己刚刚工作几个月,出差到外地,项目也是保密性质的,不能联网,没有Maven仓库,只有些零零散散的项目要用到的jar包。同事用IDEA创建Artifacts打包,自己手动配置
MANIFEST.MF
,真心难受。现在又拿到这个项目,Springboot版本1.52.RELEASE,找包都找了半天。
好不容易找到了,用
<scope>system</scope>
加<systemPath>${project.basedir}/lib/xxx.jar</systemPath>
这种方式引入到pom中,项目也能启动,但死活不能用maven一键打包,手动打包?痛苦面具。
今天写下这篇文章记录一下,如何在IDEA引入了本地jar包的情况下使用maven插件打包
打开Project Structure
选择本地jar包所在目录并确认应用,这里我在当前项目下新建了名为lib的Directory,本地jar包都移到这里面
完成后就可以看见已经成功引入本地jar包
然后转到Modules
可以看到当前模块的依赖就有了刚刚添加的本地jar包,作用域为Compile
pom.xml配置
打开侧栏Project
的External Libraries
,可以看到现在项目除了JDK以外并无其他依赖包
打开pom.xml
文件
正常的Properties
<properties>
<java.version>11</java.version>
</properties>
dependencies
也是正常编写,然后只需新加作用域compile
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
<scope>compile</scope>
</dependency>
</dependencies>
此时External Libraries
里也正常引入了
然后是build
<build>
<finalName>local-jar-dem</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 本地jar包还需要引入相关的springboot依赖,且版本号不可胜,得显式写出 -->
<version>2.4.1</version>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
<executions>
<execution>
<goals>
<!-- 加上这个配置才能完成打包,不然打出来只有几十K -->
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--
这个配置是指定项目语言等级(解决刷新maven后lambda的支持问题),公司项目使用的Springboot为1.52,最高只支持Java6。
当然,我这里的演示项目使用的当前最新版的Springboot2.4.1,安装的Java版本为JDK11,所以这个插件配置我这里可以不需要。
-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
此时就可以愉快地使用maven插件打包了 😃
顺便一提,如果要使用IDEA Artifacts打包,需要注意的是在选择MANIFEST.MF
文件保存位置时不要默认选到xx/src/main/java
,这会导致打出来的包丢失主类信息如Main-Class: net.add1s.localjardemo.LocalJarDemoApplication