背景

本地 Jar 包打包进项目时,要么在 IDEA 运行不起来命令运行可以,要么 IDEA 运行可以命令运行不起来(找不到 Jar 包,其实是没打进去或者没打对位置)


解决方案

方法一: lib 放在 resources 文件夹下(需要设置排除 lib 文件夹,不然会打包两份本地 Jar 包进项目 Jar 包)

    <dependencies>
        <dependency>
            <groupId>com.xxx</groupId>
            <artifactId>sdk-java</artifactId>
            <version>{sdk.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/lib/sdk-java.jar</systemPath>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>lib/**</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
            </resource>
        </resources>
    </build>

方法二: lib 和 resources 放在同级目录(不需要排除)

    <dependencies>
        <dependency>
            <groupId>com.xxx</groupId>
            <artifactId>sdk-java</artifactId>
            <version>{sdk.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/lib/sdk-java.jar</systemPath>
        </dependency>
    </dependencies>
    <build>
        <finalName>${project.artifactId}</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>src/main/lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
            </resource>
        </resources>
    </build>

补充: 使用上面方案仍然没有把本地包打进项目包的处理方案

  	<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>