zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    codevs 1115 开心的金明
    POJ 1125 Stockbroker Grapevine
    POJ 2421 constructing roads
    codevs 1390 回文平方数 USACO
    codevs 1131 统计单词数 2011年NOIP全国联赛普及组
    codevs 1313 质因数分解
    洛谷 绕钉子的长绳子
    洛谷 P1276 校门外的树(增强版)
    codevs 2627 村村通
    codevs 1191 数轴染色
  • 原文地址:https://www.cnblogs.com/LQBlog/p/14780762.html
Copyright © 2011-2022 走看看