Maven打包包含依赖

1.增加maven依赖

      <dependency>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.0.0</version>
      </dependency>

2. maven项目的pom文件添加配置:

<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>xx.xxx.xxxxx.xxxxx.App</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

3. 执行maven打包命令:

mvn clean assembly:assembly

之后就会生成两个jar包文件:一个是默认的jar包(不包含所有引用的依赖);一个是后缀名为jar-with-dependencies的jar包(包含所有引用的依赖)。

### 打包 Spring Boot Maven 项目并指定启动类 在 Spring Boot 项目中,使用 Maven 打包时可以通过配置 `spring-boot-maven-plugin` 插件将依赖库、配置文件和主类信息打包进可执行的 JAR 文件中。这样生成的 JAR 可以通过 `java -jar` 命令直接运行,并且可以指定启动类。 #### 1. 包含依赖并指定启动类的打包方式 Spring Boot 默认使用 `spring-boot-maven-plugin` 插件来生成可执行 JAR,该插件会将项目编译后的类文件、依赖库(`/BOOT-INF/lib`)、配置文件(如 `application.properties`)以及启动类信息整合到一个 JAR 包中[^2]。要指定启动类,需要在插件配置中添加 `mainClass` 参数。 以下是一个典型的 `pom.xml` 插件配置示例: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>li_maven.SpringBootDemoApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 通过上述配置,Maven 在执行 `mvn package` 命令时,会将 `li_maven.SpringBootDemoApplication` 类作为主类,并将其信息写入 `MANIFEST.MF` 文件中,确保 `java -jar your-application.jar` 能够正确识别启动类并运行[^1]。 #### 2. 生成的 JAR 包结构说明 Spring Boot 打包生成的 JAR 包不同于普通的 JAR 文件,它是一个 **可执行 JAR**,其结构如下: ``` your-application.jar ├── BOOT-INF/ │ ├── classes/ // 项目编译后的类文件和配置文件 │ └── lib/ // 项目依赖的所有第三方库(JAR) ├── META-INF/ │ └── MANIFEST.MF // 包含 Main-Class 和 Start-Class 信息 └── org.springframework.boot.loader.JarLauncher // 启动器类 ``` 在 `MANIFEST.MF` 文件中,`Main-Class` 指定为 `org.springframework.boot.loader.JarLauncher`,这是 Spring Boot 提供的用于加载内嵌 JAR 的类加载器。而 `Start-Class` 则指定为用户配置的主类(如 `li_maven.SpringBootDemoApplication`)[^2]。 #### 3. 分离依赖和配置文件(可选) 在某些部署场景中,为了提高部署效率,可以将依赖库、配置文件和主程序分离打包。例如,可以将依赖打包到一个独立的 `lib` 目录,配置文件单独放在 `config` 目录,主程序打包为一个较小的 JAR 文件。这种做法可以减少每次部署时需要上传的文件体积。 要实现依赖分离,可以在 `spring-boot-maven-plugin` 中配置打包方式: ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <mainClass>li_maven.SpringBootDemoApplication</mainClass> </configuration> </execution> </executions> </plugin> ``` 执行 `mvn package` 后,可以在 `target` 目录下生成主程序 JAR,同时将依赖库输出到 `lib` 目录中[^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值