• 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

  • 相关阅读:
    uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
    Uva10082 WERTYU -S.B.S.
    Quicksum-S.B.S.
    NOIP2014提高组 DAY1 -SilverN
    NOIP2013普及组 -SilverN
    uva 1354 Mobile Computing ——yhx
    UVa 11292 Dragon of Loowater
    UVa 839 Not so Mobile
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/16830577.html
Copyright © 2020-2023  润新知