1. 程式人生 > 實用技巧 >3.springboot多模組打包

3.springboot多模組打包

1.各個模組pom檔案對應的打包方式:
  petrochina(父工程):<packaging>pom</packaging>
  petrochina-admin(子工程):<packaging>jar</packaging>
  petrochina-common(子工程):<packaging>jar</packaging>
  petrochina-framework(子工程):<packaging>jar</packaging>
  petrochina-generator(子工程):<packaging>jar</packaging>
  petrochina-quartz(子工程):<packaging>jar</packaging>
  petrochina-system(子工程):<packaging>jar</packaging>

2.父工程(petrochina)pom.xml檔案中的打包外掛
  
  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

3.子工程
  1)petrochina-admin(帶有啟動類的子工程)
    

在該模組的pom.xml檔案中:

<build>
  <plugins>
  <plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.1.1.RELEASE</version>
  <configuration>
   <fork>true</fork> <!-- 如果沒有該配置,devtools不會生效 -->
   <!-- 指定該Main Class為全域性的唯一入口,啟動類的全限定類名 -->
   <mainClass>com.petrochina.PetrochinaApplication</mainClass>
   <layout>ZIP</layout>
         <!-- 打包的時候,因為該模組有第三方jar包,所以添加了下面的一條語句 -->
   <includeSystemScope>true</includeSystemScope>
   </configuration>
   <executions>
   <execution>
   <goals>
   <goal>repackage</goal>
   </goals>
  </execution>
  </executions>
  <dependencies>
  <!-- spring熱部署 -->
  <dependency>
  <groupId>org.springframework</groupId>
  <artifactId>springloaded</artifactId>
  <version>1.2.6.RELEASE</version>
  </dependency>
   </dependencies>
   </plugin>
  <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
   <version>3.0.0</version>
  <configuration>
  <failOnMissingWebXml>false</failOnMissingWebXml>
  <warName>${project.artifactId}</warName>
  </configuration>
  </plugin>
  </plugins>
</build>
-----------說明---------------
因為該模組(petrochina-admin)需要引入第三方jar包
引入的方式3步:
  1.在該模組下,src/main/resources/目錄下新建一個lib目錄,把第三方jar拷貝進去
  

  2.在<dependencies></dependencies>標籤中新增

      <dependency>

        <groupId>gun.io</groupId>

        <artifactId>RXTXcomm</artifactId>

        <version>2.0</version>

        <scope>system</scope>

        <systemPath>${project.basedir}/src/main/resources/lib/RXTXcomm.jar</systemPath>

      </dependency>

     理論上<groupId>、<artifactId>、<version>中的內容可以隨便寫,但是應該根據jar包來

   3.在該模組的pom.xml中新增一條語句,即上面用紅色標註的語句<includeSystemScope>true</includeSystemScope>



  2)其他子工程都一樣,打包方式為<package>jar</package> 


4.開始打包
  

-------------------注意---------

在打包的過程中可能會出現以下問題:

問題:有時在打包的時候會出現提示jar包下載不下來,即jar包從遠端倉庫下載失敗

原因:證書問題

解決:

  1.下載證書(自行百度)

  2.臨時解決

    新增:-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

    位置: