JavaSE 程序打包(jar包)

本文介绍了Maven中的三种打包插件:maven-jar-plugin、maven-shade-plugin和maven-assembly-plugin。重点讲解了maven-shade-plugin的配置,用于创建可执行的FatJAR,并提供了示例代码。还提到了IDEA中非Spring项目和Spring项目的打包方法,以及如何查看Java汇编指令。
摘要由CSDN通过智能技术生成

在 Maven 中,主要有3个插件用来打包:

  1. maven-jar-plugin,默认的打包插件,得到普通的 Project JAR 包(主要用来依赖)
  2. maven-shade-plugin,打可执行JAR包,得到 Fat JAR 包(包含所有依赖)
  3. maven-assembly-plugin,支持自定义的打包结构和定制依赖项

Shade 插件的使用

  • 插件:apache-maven-shade 的打包
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
        	<!-- 避免生成reduced pom文件 -->
        	<createDependencyReducedPom>false</createDependencyReducedPom>
        </configuration>
        <executions>
            <execution>
                <!-- 插件把自己绑在 package 这一步,执行shade:shade("插件名":"goal名") 这个goal -->
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer
                                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>com.howeres.observer.WeatherStation</mainClass>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
  • idea 的非 spring 程序的 jar 打包:

    • Artifacts -> add jar -> from modules with dependencies -> choose main class
    • idea window choose the Build -> Build Artifacts… -> Build
  • 查看 java 汇编指令:javap -c -l XXX.class

    • c:对代码进行反汇编
    • l:查看行号
    • 需要配好 Java 环境变量才能使用 javap

关于spring项目的打包

  • 最好使用 maven 方式打包(可以查看我的另一篇关于maven生命周期的文章)。在使用 artifacts 方式打包会出现错误: 找不到或无法加载主类 com.xx.xx.App 或者选用 copy to the output directory and link via manifest 也就是Create JAR from Modules第二项,这样out目录会有非常多jar包,但也容易出现问题
  • spring 多模块项目打包时
    • 需要在 root (父模块)下,进行 mvn package
    • 在启动类所在的模块下,pom.xml 文件需要有<build></build>来包含打包插件,生成可执行jar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值