• Maven之assembly自定义打包


    maven自定义打包 步骤

    pom文件引入两个插件

    maven-dependency-plugin   maven  自带插件

    maven-assembly-plugin         assembly插件

     1 <build>
     2         <plugins>
     3             <plugin>
     4                 <groupId>org.apache.maven.plugins</groupId>
     5                 <artifactId>maven-assembly-plugin</artifactId>
     6                 <!--这里需要指定assemble打包规则的xml   在父pom中指定了此处省略-->
     7             </plugin>
     8             <plugin>
     9                 <groupId>org.apache.maven.plugins</groupId>
    10                 <artifactId>maven-dependency-plugin</artifactId>
    11                 <executions>
    12                     <execution>
    13                         <id>uyun-unpack</id>
    14                         <phase>generate-resources</phase>
    15                         <goals>
    16                             <goal>unpack</goal>
    17                         </goals>
    18                         <configuration>
    19                             <artifactItems>
    20                                 <!-- 将依赖的构建tar.gz包解压 -->
    21                                 <artifactItem>
    22                                     <groupId>uyun.kaola</groupId>
    23                                     <artifactId>kaola-app-build</artifactId>
    24                                     <classifier>bin</classifier>
    25                                     <version>${project.version}</version>
    26                                     <type>tar.gz</type>
    27                                     <overWrite>true</overWrite>
    28                                     <outputDirectory>${project.build.directory}/iotdiscovery-app</outputDirectory>
    29                                     <includes>**</includes>
    30                                 </artifactItem>
    31                             </artifactItems>
    32                         </configuration>
    33                     </execution>
    34                 </executions>
    35             </plugin>
    36         </plugins>
    37     </build>

    父pom.xml如下  指定插件版本 以及使用assembly.xml定义打包规则

    <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${assembly.version}</version>
                        <executions>
                            <execution>
                                <id>build-bin</id>
                                <!-- 绑定到package生命周期阶段 -->
                                <phase>package</phase>
                                <goals>
                                    <!-- 只运行一次 -->
                                    <goal>single</goal>
                                </goals>
                                <configuration>
                                    <descriptors>
                                        <!--描述文件路径 ,默认跟当前pom.xml同一级目录下 -->
                                        <descriptor>assembly.xml</descriptor>
                                    </descriptors>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- 依赖分析插件 执行 -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>${maven_dependency_plugin_version}</version>
                        <!-- <executions> package阶段绑定,将maven依赖的构建jar拷贝到项目根目录/lib目录下 <execution>
                            <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal>
                            </goals> <configuration> <outputDirectory> ${project.build.directory}/lib/
                            </outputDirectory> </configuration> </execution> </executions> -->
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>

    assembly.xml中具体定义打包的规则   需要的包 输出目录等

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3     xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
     4 
     5     <id>bin</id>
     6     <formats>
     7         <!-- <format>tar.gz</format> -->
     8         <format>tar.gz</format>
     9     </formats>
    10     <includeBaseDirectory>false</includeBaseDirectory>
    11 
    12 
    13     <!-- 配置要归档的文件集合 -->
    14     <fileSets>
    15         <fileSet>
    16             <!-- 定义要归档的文件目录位置 -->
    17             <directory>src/main/resources</directory>
    18             <filtered>true</filtered>
    19             <!-- 定义归档输出目录 -->
    20             <outputDirectory>iotdiscovery-app</outputDirectory>
    21             <!-- 定义包含规则 -->
    22             <!-- <includes>
    23                 <include>spring/**</include>
    24                 <include>logback.xml</include>
    25                 <include>disconf.properties</include>
    26             </includes> -->
    27             <!-- 定义排除规则 -->
    28             <excludes>
    29                 <exclude>**/.gitkeep</exclude>
    30                 <exclude>**/iot-discovery.properties</exclude>
    31                 <exclude>META-INF/**</exclude>
    32             </excludes>
    33             <!-- 指定文件权限(*inux) -->
    34             <fileMode>755</fileMode>
    35         </fileSet>
    36 
    37 
    38 
    39         <fileSet>
    40             <directory>${project.build.directory}/iotdiscovery-app</directory>
    41             <includes>
    42                 <!-- 包含iotdiscovery-app模块哪些修改过的文件 -->
    43                 <include>**/message_zh_CN.properties</include>
    44                 <include>**/message_en_US.properties</include>
    45                 <!-- <include>**/kaola-app-web.jar</include> -->
    46                 <!-- <include>**/kaola-app-service.jar</include> -->
    47                 <include>**/web/html/</include>
    48 
    49             </includes>
    50             <outputDirectory>iotdiscovery-app</outputDirectory>
    51         </fileSet>
    52         <fileSet>
    53             <directory>${project.build.directory}/iotdiscovery-app/web/lib</directory>
    54             <includes>
    55                 <!-- 包含iotdiscovery-app模块哪些修改过的文件 -->
    56                 <!-- <include>**/message_zh_CN.properties</include> -->
    57                 <!-- <include>**/message_en_US.properties</include> -->
    58                 <include>kaola-app-web.jar</include>
    59                 <include>kaola-app-service.jar</include>
    60                 <!-- <include>**/web/html/</include> -->
    61 
    62             </includes>
    63             <outputDirectory>iotdiscovery-app/custom</outputDirectory>
    64         </fileSet>
    65 
    66     </fileSets>
    67 
    68 </assembly>
  • 相关阅读:
    P/Invoke .NET调用win32API
    怎么将字节流转换成汉字?(硬件printf的汉字怎么解析?)
    个人电脑配置FTP服务器,四张图搞定。项目需要,并自己写了个客户端实现下载和上传的功能!
    C# 中Datetime类用法总结
    C#环境datagidview添加删除操作
    C#环境下,文本框翻屏,怎么一直显示当前插入的内容!!!!!!!!!!!!!!!!
    eclipse下提交job时报错mapred.JobClient: No job jar file set. User classes may not be found.
    SQL Server连接数据库失败,可能的问题!
    写好的mapreduce程序,编译,打包,得到最后的jar包! 验证jar包 ! 整体流程
    在虚拟机环境下,电脑间拷贝配置好的伪分布式Hadoop环境,出现namenode不能启动的问题!
  • 原文地址:https://www.cnblogs.com/chigd/p/9029741.html
Copyright © 2020-2023  润新知