maven 分離打包的技術

1.概要

我們在構建springboot 程序的時候,可以將所有的文件打包成一個大的文件,這個使用起來還是很方便的,但是有些情況下不是很方便,比如 程序需要經常更新的時候,通過網絡傳輸就比較慢,還有比如,我們有一些的微服務,這個時候大部分的jar都是相同的,這個時候如果,只打包我們自己開發的部分,那麼這個包就會很小。其實我們可以使用maven 分離打包的技術將 依賴和資源文件分離打包。

2. 操作步驟

2.1 我們編輯 pom.xml 文件

我們在pom.xml 中增加一個 profile,下面的代碼就是負責分離打包。

<profiles>
        <profile>
            <id>分離打包</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifest>
                                    <!-- 配置加入依賴包 -->
                                    <addClasspath>true</addClasspath>
                                    <classpathPrefix>lib/</classpathPrefix>
                                    <useUniqueVersions>false</useUniqueVersions>
                                    <!-- Spring Boot 啓動類(自行修改) -->
                                    <mainClass>com.misoft.JPaasDemoApplication</mainClass>
                                </manifest>
                                <manifestEntries>
                                    <!-- 外部資源路徑加入 manifest.mf 的 Class-Path -->
                                    <Class-Path>resources/</Class-Path>
                                </manifestEntries>
                            </archive>
                            <!-- jar 輸出目錄 -->
                            <outputDirectory>${project.build.directory}/fastjar/</outputDirectory>
                        </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}/fastjar/lib</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-resources-plugin</artifactId>
                        <!-- 複製資源 -->
                        <executions>
                            <execution>
                                <id>copy-resources</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <resources>
                                        <resource>
                                            <directory>src/main/resources</directory>
                                        </resource>
                                    </resources>
                                    <!-- 資源文件 輸出目錄 -->
                                    <outputDirectory>${project.build.directory}/fastjar/resources</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <configuration>
                            <source>8</source>
                            <target>8</target>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

上面代碼的意思是

  1. maven-compiler-plugin
    使用 1.8 對對代碼進行編譯。
  2. maven-jar-plugin
    使用 jar 插件,打包我們自己開發的程序
  3. maven-dependency-plugin
    使用依賴插件,將我們的依賴包拷貝到 fastjar/lib 目錄
  4. maven-resources-plugin
    使用資源插件將資源文件考本到資源目錄下面。

2.2 打包

增加 profile 後 我們可以在IDEA 中看到

image

打包時,勾選分離打包。

打包後:
image

我們也可以使用命令行進行打包。

mvn clean package -P 分離打包

2.3 啓動程序

因爲打包成份數的文件了,我們怎麼啓動這個程序呢?

我們可以使用如下命令進行啓動。

java -Xms256m -Xmx512m -Xmn256m -jar ./jpaas-demo.jar --nacos.address=localhost:8848 --nacos.namespace=local --spring.config.additional-location=resources/ --logging.config=resources/logback-spring.xml

啓動後,我們可以觀察nacos。

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章