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

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