你的想法很重要-大家都来谈 (C)Copyright 2012 by WeiPt

大疆上云APIdemo打包配置

大疆上云api的demo程序默认不能打包成JAR包,平台有两个模块,sample和cloud-sdk,前者是主程序,后者是封装的基层库,打包配置文件有三个分别是最外层的pom.xml和两个模块内部的两个pom.

大疆官网提供的Spring Boot项目默认不配置打包插件,通常是为了保持灵活性和避免与用户现有项目结构冲突。下面我会帮你分析原因,并给出一个简单可靠的修改方案。

🧩 默认不配置打包的原因

大疆官方POM可能没有配置 spring-boot-maven-plugin,主要是出于以下几点考虑:

  • 项目类型不明确:父POM可能被多个子模块继承,某些模块可能是普通的JAR库(不需要可执行JAR),而只有包含主类的模块(如你的sample)才需要打包成可执行JAR。直接在父POM配置可能会影响其他模块。

  • 自定义需求:用户的项目可能具有特殊的打包需求(比如需要包含外部资源、特定的目录结构等),官方提供一个"干净"的POM让用户根据自己的情况配置更为稳妥8

  • 依赖管理优先:官方提供的POM首要任务是确保依赖版本和范围的正确管理,使项目能够正确编译210。打包部署通常被视为后续的、可由用户定制的步骤。

🔧 简单修改实现打包

要让你的sample模块能够打包成可执行的JAR,最关键的一步就是在sample模块的POM(即你提供的pom3.xml)中添加 spring-boot-maven-plugin 插件。

  1. 定位你的sample模块的POM文件:找到你项目中的 sample/pom.xml

  2. 添加打包插件配置:在 <project> 标签下的 <build> 部分,添加如下插件配置。如果已有 <build> 标签,则将 <plugins> 部分合并进去即可:

 
<project>
  <!-- ... 其他配置 ... -->
  <build>
    <plugins>
      <!-- 这是Spring Boot项目打包成可执行JAR的核心插件 -->
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.7.12</version> <!-- 建议与父POM中Spring Boot版本一致 -->
        <executions>
          <execution>
            <goals>
              <!-- 这个goal会将所有依赖打包并生成可执行的JAR -->
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <!-- 如果你的主启动类不是自动识别的,请在此指定 -->
          <!-- <mainClass>com.dji.sample.Application</mainClass> -->
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  1. 执行打包命令:在项目根目录下打开终端,执行以下命令:

    mvn clean package -DskipTests

完成以上步骤后,正常情况下会在 sample/target/ 目录下生成一个可执行的JAR文件(通常名称类似于 sample-1.10.0.jar),你可以使用 java -jar your-jar-name.jar 来运行它。

💎 重要提醒

  • 这个修改是最小且必需的。spring-boot-maven-plugin 的 repackage goal 是生成可执行JAR的关键8

  • 确保插件版本与父POM中管理的Spring Boot版本(在你的文件里是2.7.12)保持一致,可以避免潜在的兼容性问题。

  • 大部分情况下,插件能自动找到带有 main 方法的启动类。如果打包后运行报错提示找不到主类,再取消注释上面的 <mainClass> 配置并填写正确的全类名。

 
posted @ 2025-09-28 08:53  weipt  阅读(24)  评论(0)    收藏  举报

你的想法很重要-大家都来谈 (C)Copyright 2012 by WeiPt