将依赖打进主JAR包中

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>3.2.2</version>
      <executions>
        <execution>
          <goals>
            <goal>repackage</goal>
          </goals>
          <configuration>
            <mainClass>com.hubz.PowerCtlApplication</mainClass>
          </configuration>
        </execution>
      </executions>
      <configuration>
        <excludes>
          <exclude>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
          </exclude>
        </excludes>
      </configuration>
    </plugin>

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.10.0</version>
      <configuration>
        <release>17</release>
        <source>17</source>
        <target>17</target>
      </configuration>
    </plugin>

    <!--打包跳过测试-->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>
  </plugins>
</build>

不将依赖打进主JAR中,使用外部依赖目录

也可用于Docker镜像打包优化,减少每次需要上传的文件大小,依赖全部命中缓存层

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>3.2.2</version>
      <configuration>
        <layers>
          <enabled>true</enabled>
        </layers>
        <layout>ZIP</layout>
        <!--配置需要打包进项目的jar-->
        <includes>
          <!--这里是填写需要包含进去的jar,必须项目中的某些模块,会经常变动,那么就应该将其坐标写进来如果没有则non-exists ,表示不打包依赖-->
          <include>
            <groupId>non-exists</groupId>
            <artifactId>non-exists</artifactId>
          </include>
        </includes>
      </configuration>
    </plugin>

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.10.0</version>
      <configuration>
        <release>17</release>
        <source>17</source>
        <target>17</target>
      </configuration>
    </plugin>

    <!--打包跳过测试-->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>

    <!-- 此插件用于将依赖包抽出 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
            <!--是否排除传递性-->
            <excludeTransitive>false</excludeTransitive>
            <!--是否去掉 jar 包版本信息-->
            <stripVersion>false</stripVersion>
            <!--包含范围-->
            <includeScope>runtime</includeScope>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>