一、普通main方法入口的jar程序打包 maven-jar-plugin插件与maven-jar-plugin插件

用到maven-jar-plugin插件与maven-jar-plugin插件,打包完的jar文件所依赖包没有导包到jar文件中,管理不方便

打包命令:

maven  -package

搭建过程:

1、目录结构:

2、Pox.xml配置:

<build>
    <finalName>bigdata11</finalName><!--打包完成文件的名字-->
    <plugins>
        <plugin><!--maven-jar-plugin用于生成META-INF/MANIFEST.MF文件的部分内容 jar包-->
            <groupId>org.apache.maven.plugins</groupId> <!--引入maven插件的groupId-->
            <artifactId>maven-jar-plugin</artifactId> <!--引入maven插件的artifactId-->
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath><!--MANIFEST.MF 是否增加依赖包-->
                        <classpathPrefix>lib/</classpathPrefix><!--MANIFEST.MF文件 依赖包位置格式-->
                        <mainClass>proxy.demo.TestMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin><!--maven-dependency-plugin插件用于将依赖包拷贝到<outputDirectory>${project.build.directory}/lib</outputDirectory>指定的位置,即lib目录下-->
            <groupId>org.apache.maven.plugins</groupId><!--将依赖包放到物理存储外部 li-->
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.4</version>
            <executions>
                <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>
</build>

此方式只能生成除依赖包之外的(自己写的代码)打包成jar文件,会在target目录下生成jar包,并将依赖包拷贝到target/lib目录下,目录结构如下:

二、使用maven-assembly-plugin插件打包(与eclipse导出类似)

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <configuration>
                <!--依赖装配 false:指的是,把依赖包跟java程序打包成一个jar文件内;true(默认):指的是,把依赖包单独打包成一个jar文件-->
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                         <!--此处指定main方法入口的class-->
                        <mainClass>wc.WordCountMain</mainClass>
                    </manifest>
                </archive>
                </configuration>

            <executions>
                <execution>
                    <!--代表执行插件 不写executions,则打包命令变成:mvn package assembly:single-->
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

打包命令:

maven  -package

三、maven 打包成tar.gz文件

同样使用assembly插件:maven-jar-plugin   maven-assembly-plugin

综述:

1、首先pom.xml文件添加插件

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <!-- false:生成的jar中,不要包含pom.xml和pom.properties这两个文件-->
                    <addMavenDescriptor>true</addMavenDescriptor>
                    <manifest>
                        <!--true:是否要把第三方jar放到manifest的classpath中-->
                        <addClasspath>true</addClasspath>
                        <!--生成的manifest中classpath的前缀,因为要把第三方jar放到lib目录下,所以classpath的前缀是lib/-->
                        <classpathPrefix>lib/</classpathPrefix>
                        <!--应用的main class-->
                        <mainClass>wc.WordCountMain</mainClass>
                    </manifest>
                </archive>
                <!--过滤掉不希望包含在jar中的文件-->
                <excludes>
                    <exclude>${project.basedir}/xml/*</exclude>
                </excludes>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId> maven-assembly-plugin </artifactId>
            <version>2.5.5</version>
            <configuration>
                <descriptors>
                    <!-- 描述文件路径 -->
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </descriptors>
                <archive>
                    <manifest>
                        <mainClass>wc.WordCountMain</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <!--名字任意 -->
                    <id>make-assembly</id>
                    <!-- 绑定到package生命周期阶段上 -->
                    <phase>package</phase>
                    <goals>
                        <!-- 只运行一次 -->
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2、描述文件(src\main\assemble\assembly.xml)

<assembly>
    <id>release</id><!--名字  会附加在版本后面-->
    <formats>
        <format>tar.gz</format><!--打包格式-->
    </formats>
    <!--如果为false,不会额外产生根目录,否则,在tar.gz包中会产生以pom.xml中artifactId和version命名的根目录-->
    <includeBaseDirectory>true</includeBaseDirectory>
    <!--是对依赖包的设置-->
    <dependencySets>
        <!--assembly中dependencySets的意思就是,将scope为runtime的依赖包,放到AlarmReport/lib目录下-->
        <dependencySet>
            <!--定义了是否解压依赖包,如果为true,会解压出依赖包中的class文件,反之,则不进行解压-->
            <unpack>false</unpack>
            <!--限定了对哪些依赖包进行操作;(依赖包scope的值是在pom.xml中定义的)-->
            <scope>runtime</scope>
           <!-- 依赖包在tar.gz包中相对于根目录的路径-->
            <outputDirectory>lib</outputDirectory>
            <!--依赖包中是否包含当前工程-->
            <useProjectArtifact>true</useProjectArtifact>
        </dependencySet>
    </dependencySets>
    <!--指定哪些文件包含在打出的tar.gz包中-->
    <!--assembly中两个fileSets的作用是,
    将target/classes下的文件,打包到AlarmReport目录;将startup.sh打包到AlarmReport/bin目录-->
    <fileSets>
<!-- 把项目相关的说明文件,打包进zip文件的根目录 -->
<fileSet>
    <directory>${project.basedir}</directory>
    <outputDirectory>/</outputDirectory>
    <includes>
        <include>README*</include>
        <include>LICENSE*</include>
        <include>NOTICE*</include>
    </includes>
</fileSet>

<!-- 把项目的配置文件,打包进zip文件的config目录 -->
<fileSet>
    <directory>${project.basedir}\src\main\config</directory>
    <outputDirectory>config</outputDirectory>
    <includes>
        <include>*.xml</include>
        <include>*.properties</include>
    </includes>
</fileSet>

<!-- 把项目的脚本文件目录( src/main/scripts )中的启动脚本文件,打包进zip文件的跟目录 -->
<fileSet>
    <directory>${project.build.scriptSourceDirectory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
        <include>startup.*</include>
    </includes>
</fileSet>

<!-- 把项目的脚本文件(除了启动脚本文件),打包进zip文件的script目录 -->
<fileSet>
    <directory>${project.build.scriptSourceDirectory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
        <exclude>startup.*</exclude>
    </includes>
</fileSet>

<!-- 把项目自己编译出来的jar文件,打包进zip文件的根目录 -->
<fileSet>
    <directory>${project.build.directory}</directory>
    <outputDirectory></outputDirectory>
    <includes>
        <include>*.jar</include>
    </includes>
</fileSet>

</fileSet>  </fileSets> </assembly>

打包命令:

maven  -package

maven打包成jar文件与打包成tar.gz文件相关推荐

  1. .tar.gz文件_什么是tar.gz文件,如何打开它?

    .tar.gz文件 A tar file, often called a tarball, is a collection of files wrapped up in one single file ...

  2. tar命令使用方法以及.tar.gz文件和.zip文件

    文章目录 总览 tar 打包 解包 gz 打包压缩 解压缩解包 总览 前者常见于Linux中,后者常见于windows系统下. 以前者为后缀的文件可以看成两部分,一部分是.tar,一部分是.gz. 其 ...

  3. linux如何生成tar文件内容,在Linux系统中创建tar.gz文件的方法及实例讲解

    本文介绍在Linux系统中创建tar.gz文件的方法,及实例讲解. 介绍 tar存档是一个文件,用于存储其他文件的集合,包括有关它们的信息,例如所有权.权限和时间戳. 在Linux操作系统中,可以使用 ...

  4. Win10打包tar.gz文件,Win10使用tar命令,Win10使用linux基本命令

    Windows系统使用tar命令打包tar.gz文件 使用7z命令的时候无意打了tar命令,结果发现在windows powershell上也能使用tar命令?! 试了一下tar命令,打包成功! 注: ...

  5. linux解压gz.gz文件,linux解压tar.gz并重命名_linux解压tar.gz文件

    原标题:linux解压tar.gz并重命名_linux解压tar.gz文件 命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.t ...

  6. 解压命令linux tgz,tar 解压_linux中的“tar命令”怎么解压“.tgz”与“.tar.gz”文件?...

    在LINUX下如何将tar压缩文件解压到指定的目录下 一.解压.tar.gz格式到指定的目录下: 命令格式为:tar -zxvf [压缩包文件名.tar.gz] -C  [路径]/ 例如:tar -z ...

  7. Linux下.gz和.tar.gz文件解压方法

    一.gz文件的解压方法: 1. gzip命令 gzip -d test.gz 2. zcat命令 使用zcat  命令,然后将标准输出保存文件 zcat test.gz > test 二. ta ...

  8. Linux解压.tgz,.tar.gz文件(tar详细参数使用介绍)

    一.Linux操作.tgz文件 1.解压.tgz文件: (1)解压到当前文件夹 命令:tar zxvf  文件名.tgz -C ./ eg:tar zxvf demo.tgz -C ./ (2)解压到 ...

  9. java 压缩文件tar_使用Java API进行tar.gz文件及文件夹压缩解压缩

    在java(JDK)中我们可以使用ZipOutputStream去创建zip压缩文件,(参考我之前写的文章 使用java API进行zip递归压缩文件夹以及解压 ),也可以使用GZIPOutputSt ...

最新文章

  1. Linux内核文件vmlinux 和压缩后的bzImage文件格式分析
  2. go同一个目录下的go文件里面不能有多个package
  3. linux 创建内核线程
  4. PHP并行查询MySQL
  5. android删除电池功能,Android教程:删除电池信息增加待机时间
  6. 为什么突然变乱码_9102年了,还不知道Android为什么卡?
  7. (零)ubuntu下制作最小deb包
  8. SpringBoot 的属性配置文件
  9. C/C++ Bug记录
  10. linux less命令详解
  11. 无线Mesh网络技术及其应用
  12. 增加设备分类号之后,设备名称SOM聚类前九个子类
  13. python1到100奇数相加_如何使用while语句求1到100的奇数和
  14. 【案例练习】13—41个网页设计效果的代码生成器工具
  15. 河南专升本公共英语语法考点分析---被动语态
  16. 吐血整理Python体系练手项目500例(附源代码),练完可显著提升python水平
  17. 学长冷月带你怒刷LeetCode之反转链表
  18. 深度优先搜索Or深度优先遍历详解
  19. “反百度”,正义?邪恶?
  20. php公寓管理系统开题报告,php家政中介管理系统_任务书

热门文章

  1. 孪生网络图像相似度_论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
  2. mysql源码分析——InnoDB的内存结构源码
  3. Java中实用的实体类映射工具MapStruct
  4. Herm Chart
  5. Linux 上生成 SSL 证书
  6. 【SQL语言——SELECT查询操作】
  7. greensock下载_使用GreenSock的DrawSVG创建动画SVG加载器
  8. 二叉树的遍历与查找(详细笔记)
  9. 全国计算机二级vb 文库,全国计算机二级考试VB题目
  10. python画星环_TranswarpDataHubTDH企业级一站式大数据综合平台白皮书-星环.PDF