今天接手一個一年多前的自己做的項目,當時自己剛剛工作幾個月,出差到外地,項目也是保密性質的,不能聯網,沒有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