idea java maven工程打包编译配置

基本概念

首先需要明白,我们自己下载的maven亦或是idea自带的maven,本身都具备了clean、compiler、package、install、deploy的能力。所以,即使我们的项目中pom没有引入相关的编译打包jar包,也能完成这些操作。但是,要注意,这个时候打包的项目jar包,是不包含第三方jar包的,仅仅是我们项目的class文件而已。有了这个概念,就可以开始我们的编译配置了。

配置方法

第一种方式
如果希望我们的项目是按照springboot的项目架构,把我们的项目代码和第三方开源jar包打包到jar包中,那么需要引入springboot-maven-plugins的jar包(绝大部分springboot项目中都配置)。这意味着,有这个插件生成的jar包,里面包含了我们引入的所有第三方jar包,能够直接放到服务器上用java -jar的方式执行。
pom配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.3.4.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

生成的jar是我们熟悉的目录。
在这里插入图片描述

第二种方式
引入maven-assembly-plugin插件,这种方式在项目中一般作为辅助手段引入。它可以将我们需要的额外的清单文件、项目、第三方开源jar压缩到一个压缩包中,交付到相应的人员手中,而不需要零散地一个个去发送。这种方式可以与springboot-maven-plugins共存,只要不配置相应的assembly descriptor,就不会生成带有第三方开源jar的jar包。
pom配置:

可以看到,仅仅是多了一个压缩文件。
那么,如果需要生成这样的jar包呢?在不想使用springboot-maven-plugins的情况下,定制自己的打包规则,可以这样做。
pom配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <descriptorRefs>
                	<-- 这里是关键,决定了打包的目录结构 -->
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

可以看到,还多了一个我们的assemly.xml中指定的文件名的jar包,这个jar包包含了所有的第三方开源jar,拿到服务器也能正常执行。但是目录结构和我们认识的不太相同,不方便管理和查看,见以下:
在这里插入图片描述实际上,这个结构和assembly descriptor有关,maven-assembly-plugin内置了几个可用的assembly descriptor:

  • bin : 类似于默认打包,会将bin目录下的文件打到包中
  • jar-with-dependencies : 会将所有依赖都解压打包到生成物中
  • src :只将源码目录下的文件打包
  • project : 将整个project资源打包

具体的定义,可以到maven-assembly-plugin-2.4.jar里查看。

总结

一般来说,都是引springboot-maven-plugins,当需要定制化jar包内容的时候,选用maven-assembly-plugin。当然,最重要的根据项目的需要,灵活选择。
完~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值