Springboot项目Maven打包实践

独立可执行包

自动化部署时,可以打包成一个独立的可执行的jar包,方便和docker结合制作独立镜像。相关配置:

    <build>
        <finalName>finalName</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>

        <!-- 主要配置:将引用的 jar 包打进生成的 jar 文件的 BOOT-INF/lib 目录中 -->
        <resources>
            <resource>
                <directory>lib</directory>
                <targetPath>lib</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>

    </build>

打包命令:

mvn clean package -D skipTests

将依赖包放到外面

当手动部署程序时,每次都要上传动辄几十兆的包有点费时,这时候可以考虑将依赖包放到外面的lib目录,有依赖变动时改变相关包即可。有时候需要引进本地包,同样需要自动打包到lib目录并且在MANIFEST中引入。
本地依赖配置:

        <dependency>
            <groupId>com.taobao.api</groupId>
            <artifactId>taobao-sdk</artifactId>
            <version>1.0.0</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/taobao-sdk-1.0.0.jar</systemPath>
        </dependency>

打包相关配置:

    <build>
        <finalName>finalName</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.tj.server.Application</mainClass>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>./</Class-Path>
                            <Class-Path>lib/taobao-sdk-1.0.0.jar</Class-Path>
                        </manifestEntries>
                    </archive>
                    <excludes>
                        <exclude>application*.yml</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

注意:本地文件的包名、写入manifest的包名、maven依赖配置的包名要一致。
打包命令:

 mvn clean package -D skipTests
 mvn dependency:copy-dependencies -DoutputDirectory=F:\\tj\\server\\target\\lib  -DincludeScope=runtime
 mvn dependency:copy-dependencies -DoutputDirectory=F:\\tj\\server\\target\\lib  -DincludeScope=system

参考文章

Maven Manifest Entries官方文档
用 Maven 管理项目文件周期的技巧

    原文作者:紫石南
    原文地址: https://www.jianshu.com/p/0ab20d22e275
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞