maven打jar包时,缺少本地jar包

最近通过Docker + harbor + kuboard方式进行在开发环境进行部署,遇到了一个问题,本地idea中运行项目正常,但是kuboard一直报错重启。

BACK-OFF RESTARTING FAILED CONTAINER

通过查看kuboard日志发现是在运行容器启动项目时,缺少了一个本地数据库连接驱动。
然后检查项目中的pom文件,一开始感觉一切正常。pom配置如下:

        <dependency>
            <groupId>com.dm</groupId>
            <artifactId>DmJdbcDriver</artifactId>
            <version>18</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver-18.jar</systemPath>
        </dependency>
        ………

  <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
  <build/>

其中数据库驱动放在了resources目录下的lib文件夹下,通过在dependency中直接本地指定。后面在通过在plugin maven工具中声明 includeSystemScope支持本地jar包的形式。
但是后面无论怎么重新打包都是报相同错误。
后面在别人的代码里发现下面这段:

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>lib</directory>
                <targetPath>BOOT-INF/lib/</targetPath>
                <includes>
                    <include>*.jar</include>
                </includes>
            </resource>
        </resources>
    </build>

然后将这段 resources移植到了我的build下,重新打包之后,错误就消失了,项目成功运行,但是我还是没搞懂具体原因。然后又把这段代码注释掉,删除本地target,重新mvn clean package,打算到jar包里去看看,到底有没有导入进去,但是这一次包里已经有了本地jar包,而且也没有报错了,问题无法复现了。虽然问题稀里糊涂的解决了,但是这种搞不清楚原因的事情真让人火大,希望下次在遇到类似问题可以找到原因吧。

猜你喜欢

转载自blog.csdn.net/qq_42740899/article/details/131378074
今日推荐