zoukankan      html  css  js  c++  java
  • Springboot基于assembly的服务化打包

    (1)首先我们编辑 assembly.xml 配置文件,在前文的基础上新增第三方依赖设置(高亮部分),实现将第三方的 jar 包添加到压缩包里的 lib 目录:

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly>
        <!--
            必须写,否则打包时会有 assembly ID must be present and non-empty 错误
            这个名字最终会追加到打包的名字的末尾,如项目的名字为 hangge-test-0.0.1-SNAPSHOT,
            则最终生成的包名为 hangge-test-0.0.1-SNAPSHOT-bin.tar.gz
         -->
        <id>bin</id>
        <!-- 打包的类型,如果有N个,将会打N个类型的包 -->
        <formats>
    <!--        <format>tar.gz</format>-->
            <format>zip</format>
        </formats>
        <includeBaseDirectory>true</includeBaseDirectory>
    
        <!--第三方依赖设置-->
        <dependencySets>
            <dependencySet>
                <!-- 不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录 -->
                <useProjectArtifact>false</useProjectArtifact>
                <outputDirectory>lib</outputDirectory>
                <unpack>false</unpack>
            </dependencySet>
        </dependencySets>
    
        <!--文件设置-->
        <fileSets>
            <!--
                0755->即用户具有读/写/执行权限,组用户和其它用户具有读写权限;
                0644->即用户具有读写权限,组用户和其它用户具有只读权限;
            -->
            <!-- 将src/main/assembly/bin目录下的所有文件输出到打包后的bin目录中 -->
            <fileSet>
                <directory>src/main/assembly/bin</directory>
                <outputDirectory>bin</outputDirectory>
                <fileMode>0755</fileMode>
                <!--如果是脚本,一定要改为unix.如果是在windows上面编码,会出现dos编写问题-->
                <lineEnding>unix</lineEnding>
                <filtered>true</filtered><!-- 是否进行属性替换 -->
            </fileSet>
            <!-- 将src/main/assembly/config目录下的所有文件输出到打包后的config目录中 -->
            <fileSet>
                <directory>src/main/assembly/config</directory>
                <outputDirectory>config</outputDirectory>
                <fileMode>0644</fileMode>
            </fileSet>
            <!-- 将src/main/resources下配置文件打包到config目录 -->
            <fileSet>
                <directory>src/main/resources</directory>
                <outputDirectory>./config</outputDirectory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                </includes>
                <filtered>true</filtered><!-- 是否进行属性替换 -->
            </fileSet>
            <!-- 将项目启动jar打包到lib目录中 -->
            <fileSet>
                <directory>target</directory>
                <outputDirectory>./</outputDirectory>
                <includes>
                    <include>*.jar</include>
                </includes>
            </fileSet>
            <!-- 将项目说明文档打包到docs目录中 -->
           <!-- <fileSet>
                <directory>.</directory>
                <outputDirectory>./docs</outputDirectory>
                <includes>
                    <include>*.md</include>
                </includes>
                <fileMode>0644</fileMode>
            </fileSet>-->
            <fileSet>
                <directory>docs</directory>
                <outputDirectory>./docs</outputDirectory>
                <fileMode>0644</fileMode>
            </fileSet>
            <fileSet>
                <directory>src/main/assembly/docs</directory>
                <outputDirectory>./docs</outputDirectory>
                <fileMode>0644</fileMode>
            </fileSet>
        </fileSets>
    </assembly>

    (2)接着编辑项目的 pom.xml 文件,先前使用的是 spring-boot-maven-plugin 来打包,这个插件会将项目所有的依赖打入项目 jar 包里面。我们将其替换为 maven-jar-plugin,并进行相关设置。

     <build>
            <plugins>
                <!-- 指定启动类,将依赖打成外部jar包 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 -->
                            <addMavenDescriptor>false</addMavenDescriptor>
                            <manifest>
                                <!-- 是否要把第三方jar加入到类构建路径 -->
                                <addClasspath>true</addClasspath>
                                <!-- 外部依赖jar包的最终位置 -->
                                <!-- 因为我们将第三方jar和本项目jar放在同一个目录下,这里就使用./ -->
                                <classpathPrefix>./lib</classpathPrefix>
                                <!-- 项目启动类 -->
                                <mainClass>com.yuehang.disneyland.DisneylandApplication</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <!--主要使用的是maven提供的assembly插件完成-->
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.1.1</version>
                    <configuration>
                        <descriptors>
                            <!--具体的配置文件-->
                            <descriptor>src/main/assembly/assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <!--绑定到maven操作类型上-->
                            <phase>package</phase>
                            <!--运行一次-->
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    然后打包出来的结构

     运行就ok了

    如果觉得麻烦 可以看另一篇博文  https://www.cnblogs.com/purely/p/13085026.html

  • 相关阅读:
    CSS3 动画--- CSS3 animation
    CSS3 3D变形 transform---rotateX(), rotateY(), rotateZ(), 透视(perspective)
    CSS3 2D变形 transform---移动 translate(x, y), 缩放 scale(x, y), 旋转 rotate(deg), transform-origin, 倾斜 skew(deg, deg)
    CSS3 过渡---transition
    情人节用Python智能聊天机器人的实现|制作一个虚拟恋人
    Python基础知识详解 从入门到精通(七)类与对象
    Python核心编程:8个实践性建议
    给Python初学者的一些编程技巧
    30分钟编写一个抓取 Unsplash 图片的 Python爬虫
    Python反编译调用有道翻译(附完整代码)
  • 原文地址:https://www.cnblogs.com/purely/p/13086546.html
Copyright © 2011-2022 走看看