zoukankan      html  css  js  c++  java
  • springboot-33-使用maven打瘦包

    直接使用maven的插件打包的话, 打出来一个jar, 会非常大, 有时候在服务上传的时候会非常不方便,

    <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <!-- 指定SpringBoot程序的main函数入口类 -->
                        <mainClass>com.letv.bigdata.idfa.Main</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

    因此需要打出来的jar包不带以来, 依赖防止在lib目录下, 配置文件放在config目录下

    <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.6</version>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>com.letv.bigdata.idfa.Main</mainClass>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>../libs/</classpathPrefix>
                            </manifest>
                            <manifestEntries>
                                <!--<Class-Path>./</Class-Path>-->
                                <Class-Path>../config</Class-Path>
                            </manifestEntries>
                        </archive>
                        <excludes>
                            <exclude>application*.yml</exclude> //指定打包时要排除的文件,支持正则
                        </excludes>
                    </configuration>
                </plugin>
    
                <!--拷贝依赖jar到指定的目录-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <!--<version>2.2</version>-->
                    <executions>
                        <execution>
                            <id>copy-dependencies</id>
                            <phase>package</phase>
                            <goals>
                                <goal>copy-dependencies</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${project.basedir}/libs</outputDirectory>
                                <overWriteReleases>false</overWriteReleases>
                                <overWriteSnapshots>false</overWriteSnapshots>
                                <overWriteIfNewer>true</overWriteIfNewer>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2.1</version>
                    <configuration>
                        <descriptors>
                            <descriptor>${project.basedir}/assembly.xml</descriptor>
                        </descriptors>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-package</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    使用的assembly放在项目根目录下, 和src一个级别

    aseembly.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <assembly>
        <!-- 最终生成的包名称为artifactId-version-id.format,
                id主要用来区分包是由哪个assembly文件生成的,本例中
                artifactId:test
                version:1.0.0
                id:bin
                format:tar.gz
                最终将会在target文件夹下生成一个名为test-1.0.0-bin.tar.gz的包 -->
        <id>bin</id>
        <!-- zip, tar, tar.gz, tar.bz2, jar, dir, war 也是支持的  -->
        <formats>
            <!-- 可以同时打多种格式的包  -->
            <format>tar.gz</format>
            <!-- <format>zip</format> -->
        </formats>
        <!--  默认值是true,此时将创建一个名为artifactId-version的根文件夹,
                所有outputDirectory标签指定的路径将变为相对于该文件夹的路径。
                例如:outputDirectoryS的值为/test,则最终径为/artifactId-version/test
                如果includeBaseDirectory的值是false,则最终路径为/test  -->
        <includeBaseDirectory>true</includeBaseDirectory>
    
        <dependencySets>
            <dependencySet>
                <!--  true是默认值,本次构建出来的jar包属于当前这个dependencySet,
                        此时jar包将会被添加至新的tar.gz包中  -->
                <useProjectArtifact>true</useProjectArtifact>
                <outputDirectory>/libs</outputDirectory>
                <unpack>false</unpack>
            </dependencySet>
        </dependencySets>
    
        <fileSets>
            <!-- 如果存在fileSet标签,并且在标签中没有使用includes标签指定打入包中的文件,
                    默认情况下,工程中的所有文件(源文件、编译后产生的.class文件、配置文件等)
                    都会被打入包中  -->
            <fileSet>
                <directory>${project.basedir}/src/main/resources</directory>
                <outputDirectory>/config</outputDirectory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </fileSet>
            <!--
            <fileSet>
                <directory>${project.basedir}/dic</directory>
                <outputDirectory>/dic</outputDirectory>
                <includes>
                    <include>*</include>
                </includes>
            </fileSet>
            -->
            <fileSet>
                <directory>${project.basedir}/script</directory>
                <outputDirectory>/bin</outputDirectory>
                <includes>
                    <include>*</include>
                </includes>
            </fileSet>
            <fileSet>
                <directory>${project.basedir}/logs</directory>
                <outputDirectory>/logs</outputDirectory>
                <includes>
                    <include>*</include>
                </includes>
            </fileSet>
    
        </fileSets>
    
    
    </assembly>

    这样打出来的是tar.gz包, 执行脚本放在bin目录下(http://www.cnblogs.com/wenbronk/p/9021542.html), conf目录下放application.yml文件等, lib目录下放所有的jar包

  • 相关阅读:
    MEF 根据配置注入Service
    .Net创建windows服务入门
    MySQL中MAX函数与Group By一起使用的注意事项(转)
    .net core 跨平台实践
    python中的迭代器和生成器
    python抓取链家房源信息(二)
    scrapy抓取小说
    python的scrapy框架
    总结
    python抓取链家房源信息
  • 原文地址:https://www.cnblogs.com/wenbronk/p/9025026.html
Copyright © 2011-2022 走看看