美文网首页Spring-Boot
Maven 分开打包项目方法

Maven 分开打包项目方法

作者: 王传贺 | 来源:发表于2019-08-23 11:02 被阅读0次

    一 : 应用场景
    项目种会遇见上传jar包到Linux 上速度极慢的情况 , 一方面是自身网络原因,很大一部分是运营商之间的相互限制,如 : Linux 是移动端的,使用电信网络上传就会被限速至几k每秒,甚至会断开的情况发送(深受其害)

    二 :解决方式
    将jar 中的lib 包, resource 资源 ,jar 代码分开打包 。 大部分情况我们只是修改代码, 配置与lib 修改的情况相对较少 , 因此我们改啥传啥思路来解决网络问题

    三 : pom 配置

    <build>
            <plugins>
    
                <!--打包jar -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <!--不打包资源文件 -->
                        <excludes>
                            <exclude>*.**</exclude>
                            <exclude>*/*.xml</exclude>
                        </excludes>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <!--MANIFEST.MF 中 Class-Path 加入前缀 -->
                                <classpathPrefix>lib/</classpathPrefix>
                                <!--jar包不包含唯一版本标识 -->
                                <useUniqueVersions>false</useUniqueVersions>
                                <!--指定入口类 -->
                                <mainClass> com.citycloud.wisdom.complaint.ComplaintApplication</mainClass>
                            </manifest>
                            <manifestEntries>
                                <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
                                <Class-Path>./resources/</Class-Path>
                            </manifestEntries>
                        </archive>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                    </configuration>
                </plugin>
    
                <!--拷贝依赖 copy-dependencies -->
                <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}/lib/
                                </outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!--拷贝资源文件 copy-resources -->
                <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}/resources</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 
                    的jar包 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖 -->
                        <includes>
                            <include>
                                <groupId>null</groupId>
                                <artifactId>null</artifactId>
                            </include>
                        </includes>
                        <layout>ZIP</layout>
                        <!--使用外部配置文件,jar包里没有资源文件 -->
                        <addResources>true</addResources>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                            <configuration>
                                <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                                <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                                <!--<classifier>run</classifier> -->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    <build>
            <plugins>
    
                <!--打包jar -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <!--不打包资源文件 -->
                        <excludes>
                            <exclude>*.**</exclude>
                            <exclude>*/*.xml</exclude>
                        </excludes>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <!--MANIFEST.MF 中 Class-Path 加入前缀 -->
                                <classpathPrefix>lib/</classpathPrefix>
                                <!--jar包不包含唯一版本标识 -->
                                <useUniqueVersions>false</useUniqueVersions>
                                <!--指定入口类 -->
                                <mainClass> com.citycloud.wisdom.complaint.ComplaintApplication</mainClass>
                            </manifest>
                            <manifestEntries>
                                <!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
                                <Class-Path>./resources/</Class-Path>
                            </manifestEntries>
                        </archive>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                    </configuration>
                </plugin>
    
                <!--拷贝依赖 copy-dependencies -->
                <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}/lib/
                                </outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!--拷贝资源文件 copy-resources -->
                <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}/resources</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    
                <!--spring boot repackage,依赖 maven-jar-plugin 打包的jar包 重新打包成 spring boot 
                    的jar包 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!--重写包含依赖,包含不存在的依赖,jar里没有pom里的依赖 -->
                        <includes>
                            <include>
                                <groupId>null</groupId>
                                <artifactId>null</artifactId>
                            </include>
                        </includes>
                        <layout>ZIP</layout>
                        <!--使用外部配置文件,jar包里没有资源文件 -->
                        <addResources>true</addResources>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                            <configuration>
                                <!--配置jar包特殊标识 配置后,保留原文件,生成新文件 *-run.jar -->
                                <!--配置jar包特殊标识 不配置,原文件命名为 *.jar.original,生成新文件 *.jar -->
                                <!--<classifier>run</classifier> -->
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    

    备注描述的很清楚, 根据自己实际项目进行修改即可

    四 : 部署
    将target 中的 lib , resources , xxx.jar 上传linux 即可部署

    相关文章

      网友评论

        本文标题:Maven 分开打包项目方法

        本文链接:https://www.haomeiwen.com/subject/taszsctx.html