Loading

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包都移到这里面

select lib

完成后就可以看见已经成功引入本地jar包

然后转到Modules

modules

可以看到当前模块的依赖就有了刚刚添加的本地jar包,作用域为Compile

pom.xml配置

打开侧栏ProjectExternal 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

posted @ 2021-03-08 22:45  mahoshojo  阅读(5076)  评论(0编辑  收藏  举报