亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在另一個項目中向Spring Boot Jar添加依賴項?

如何在另一個項目中向Spring Boot Jar添加依賴項?

慕尼黑的夜晚無繁華 2019-08-27 13:31:32
如何在另一個項目中向Spring Boot Jar添加依賴項?我有一個Spring Boot應用程序,我已經創建了一個Jar。以下是我的pom.xml:<dependencies>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-web</artifactId>     </dependency>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-mail</artifactId>     </dependency>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-thymeleaf</artifactId>     </dependency>     <dependency>         <groupId>org.thymeleaf.extras</groupId>         <artifactId>thymeleaf-extras-java8time</artifactId>         <version>2.1.0.RELEASE</version>     </dependency>     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-actuator</artifactId>     </dependency>     <!-- WebJars -->     <dependency>         <groupId>javax.mail</groupId>         <artifactId>mail</artifactId>         <version>1.4.7</version>     </dependency>     <dependency>         <groupId>com.google.code.gson</groupId>         <artifactId>gson</artifactId>         <version>2.6.2</version>     </dependency></dependencies><build>     <plugins>         <plugin>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-maven-plugin</artifactId>         </plugin>     </plugins></build>我想在我的其他應用程序中使用此Jar,因此將此jar添加到我的應用程序中。但是,當我在那個Jar中調用一個方法時,它正在拋出一個ClassNotFoundException。我該如何解決這個問題?如何向Spring Boot JAR添加依賴項?
查看完整描述

3 回答

?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

默認情況下,Spring Boot會將JAR重新打包為可執行的JAR,并將所有類放入其中BOOT-INF/classes,并將所有依賴庫放入其中BOOT-INF/lib。創建這個胖JAR的結果是你不能再將它用作其他項目的依賴項。

來自Custom repackage分類器:

默認情況下,repackage目標將使用重新包裝的工件替換原始工件。對于代表應用程序的模塊而言,這是一種理智的行為,但如果您的模塊用作另一個模塊的依賴項,則需要為重新打包的模塊提供分類器。

原因是應用程序類被打包,BOOT-INF/classes以便依賴模塊無法加載重新打包的jar類。

如果要保留原始主工件以將其用作依賴關系,可以classifierrepackage目標配置中添加:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>1.4.1.RELEASE</version>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
      <configuration>
        <classifier>exec</classifier>
      </configuration>
    </execution>
  </executions></plugin>

使用此配置,Spring Boot Maven插件將創建2個JAR:主要的一個將與通常的Maven項目相同,而第二個將附加分類器并且是可執行的JAR。


查看完整回答
反對 回復 2019-08-27
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

Tunaki的答案是正確的,但在Spring Boot 2中不起作用。

Spring Boot 1.x

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>1.5.20.RELEASE</version>
    <executions>
      <execution>
        <goals>
          <goal>repackage</goal>
        </goals>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...  </plugin>

閱讀更多


Spring Boot 2.x

如果您正在使用spring-boot-starter-parent,repackage目標將在具有id的執行中自動執行repackage。在該設置中,只應指定配置,如以下示例所示:

  <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
      <execution>
        <id>repackage</id>
        <configuration>
          <classifier>exec</classifier>
        </configuration>
      </execution>
    </executions>
    ...  </plugin>

閱讀更多


查看完整回答
反對 回復 2019-08-27
  • 3 回答
  • 0 關注
  • 1335 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號