• maven-assembly-plugin插件使用


    用于自定义打包格式

    使用方式

    <build>
            <plugins>
                <!--不采用spring boot的打包方式,我们只-->
    <!--            <plugin>-->
    <!--                <groupId>org.springframework.boot</groupId>-->
    <!--                <artifactId>spring-boot-maven-plugin</artifactId>-->
    <!--            </plugin>-->
                <!--自定义打包方式 排除所有资源文件 因为我们的资源文件都在conf里面 这样会在我们的jar-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                    <configuration>
                        <archive>
                            <!--会在META-INF/MANIFEST.MF 指定main-->
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <classpathPrefix>lib/</classpathPrefix>
                                <mainClass>com.liqiang.springbootenvironment02.SpringBootEnvironment02Application</mainClass>
                            </manifest>
                        </archive>
                        <excludes>
                            <exclude>**/*.properties</exclude>
                            <exclude>**/*.xml</exclude>
                            <exclude>**/*.yml</exclude>
                            <exclude>static/**</exclude>
                            <exclude>public/**</exclude>
                            <exclude>templates/**</exclude>
                        </excludes>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.2.1</version>
                    <executions>
                        <execution><!--执行器 mvn assembly:assembly-->
                            <id>assemble</id><!--名字任意 -->
                            <goals>
                                <goal>single</goal> <!-- 该打包任务只运行一次 -->
                            </goals>
                            <phase>package</phase><!-- 绑定到package生命周期阶段上 -->
                        </execution>
                    </executions>
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <attach>false</attach>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <!--使用默认的变量分割符即${} 可以自己定义格式-->
                    <configuration>
                        <useDefaultDelimiters>true</useDefaultDelimiters>
                    </configuration>
                    <version>3.1.0</version>
                </plugin>
            </plugins>
        </build>
        </profiles>   
    <profile>
                <id>release</id>
                <activation>
                    <!--maven打包的变量名和参数名字 如: mvn clean install -Dmaven.test.skip -Denv=release-->
                    <property>
                        <name>env</name>
                        <value>release</value>
                    </property>
                </activation>
                <!--占位符定义-->
                <properties>
                    <spring.profiles.active>pro</spring.profiles.active>
                </properties>
                <build>
                    <resources>
                        <resource>
                            <directory>${project.basedir}/src/main/resources</directory>
                            <!--这个配置的意思是过滤上面指定属性文件中的占位符,占位符是${变量名称}这样的形式,maven会自动读取includes配置文件,然后解析其中的占位符,使用上面pom文件中定义的属性进行替换-->
                            <filtering>true</filtering>
                            <includes>
                                <include>*.*</include>
                            </includes>
                        </resource>
                    </resources>
                    <plugins>
                        <plugin>
                            <artifactId>maven-assembly-plugin</artifactId>
                            <configuration>
                                <!--自定义打包xml文件-->
                                <descriptors>
                                    <descriptor>${basedir}/src/main/assembly/release.xml</descriptor>
                                </descriptors>
                                <!--打包文件名字-->
                                <finalName>spring-boot-environment02</finalName>
                                <!--打包输出目录-->
                                <outputDirectory>${project.build.directory}</outputDirectory>
                            </configuration>
                        </plugin>
    
                    </plugins>
                </build>
    
            </profile>
        </profiles>

    /src/main/assembly/release.xml

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
        <id>dist</id>
        <formats>
            <!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
            <format>tar.gz</format>
        </formats>
        <!--指定打的包是否包含打包层目录,比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下,-->
        <includeBaseDirectory>false</includeBaseDirectory>
        <fileSets>
            <fileSet>
                <directory>.</directory>
                <outputDirectory>/</outputDirectory>
                <includes>
                    <include>README*</include>
                </includes>
            </fileSet>
            <!--打包启动脚本-->
            <fileSet>
                <directory>./src/main/bin</directory>
                <outputDirectory>bin</outputDirectory>
                <includes>
                    <include>**/*</include>
                </includes>
                <!-- 文件文件执行权限 0755->即用户具有读/写/执行权限,组用户和其它用户具有读写权限; 0644->即用户具有读写权限,组用户和其它用户具有只读权限; -->
                <fileMode>0755</fileMode>
            </fileSet>
            <fileSet>
                <!--将target class下 的打包到conf 因为我们可能用resource占位-->
                <directory>./target/classes</directory>
                <outputDirectory>/conf</outputDirectory>
                <includes>
                    <include>application-dev.yml</include>
                    <include>application.yml</include>
                    <include>logback.xml</include>
                    <include>static/**</include>
                    <include>templates/**</include>
                </includes>
            </fileSet>
        </fileSets>
        <!--所有依赖放在lib包-->
        <dependencySets>
            <dependencySet>
                <outputDirectory>lib</outputDirectory>
                <excludes>
                    <exclude>junit:junit</exclude>
                </excludes>
            </dependencySet>
        </dependencySets>
    </assembly>

    执行

     mvn clean install -Dmaven.test.skip -Denv=release

  • 相关阅读:
    Java 8 锁机制
    Elasticsearch学习资料
    数据库相关
    Linux常用Shell命令
    如何高效编写可维护代码?
    分布式开放消息系统(RocketMQ)的原理与实践(转载)
    学习Linux第六天(学习文件权限和特殊权限)
    各大网络厂商列表
    Linux服务器系统信息查询
    关于情感
  • 原文地址:https://www.cnblogs.com/LQBlog/p/14780762.html
Copyright © 2020-2023  润新知