Maven项目依赖本地包及如何打包工具包

21 篇文章 2 订阅

目录

问题描述

解决方案

依赖本地包

打包工具包

 参考文献


问题描述

       最近做一个项目,打包发布的时候需要在客户提供的云桌面环境进行开发和打包,而客户的云桌面环境不能连外网,这样就不能使用我们的maven私服,不过开发的时候又想使用我们自己的私服上的一些plugin工具,最直观的办法就是把我们自己私服上的jar拷贝到云桌面上的客户的私服上,但是不幸的是,我们无法对云桌面上的maven私服进行管理,因此只能尝试将相关jar以本地包的方式引入进来。

解决方案

依赖本地包

(1)将对应的plugin-cache包down到本地,然后放到工程的lib目录下,然后修改工程的pom,添加如下依赖:

<dependency>
    <groupId>com.ohaotian.plugin</groupId>
    <artifactId>plugin-cache</artifactId>
    <version>2.0.1-multi-8</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/plugin-cache-2.0.1-multi-8.jar</systemPath><!--路径-->
</dependency>

(2)修改打包时候的配置,添加iincludeSystemScope的配置项,以SpringBoot打包为例,如下:

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--这里写上main方法所在类的路径-->
                <configuration>
                    <mainClass>com.jingu.Application</mainClass>
                    <includeSystemScope>true</includeSystemScope><!--外部进行打包-->
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

       按照如上方式可以正常将本地包依赖进来,并打包成功。但是,但是运行的时候,会出现ClassNotFound的错误,说找不到对应的类,仔细看的话会发现,找不到的都是这个jar里面再依赖的jar。 因为这个plug-cache工具类本身也是一个mavne工程,它内部还依赖了其他的依赖。但是通过这种本地方式依赖进来的包,依赖传递失效了。或者说,pom里配置本地jar的这种方式常规都是依赖的完整的工具jar,也就是所有的依赖都打到这个jar中才对。

打包工具包

       如何将一个maven工具包打包,将所有的依赖都打包进去?这要使用maven-assemble-plugin这个插件。修改plugin-cache工程对应的pom,如下所示:

   <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

       然后点击Plugins--->assembly--->assembly:assembly进行打包

       打包后效果如下:

 参考文献

【1】springboot引入外部jar包并打包jar包

【2】Maven构建可执行的jar包(包含依赖jar包)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值