一:文件类型不同

tar包:属于打包文件。Lniux系统上的压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀为“tar”。简单说tar就是打包;

jar包:属于打包文件。即Java Archive的Java包。Java编译好之后生成class文件,但是如果直接发布这些class文件的不方便,所以就把许多class文件打包为一个jar包。jar包中除了class文件还包括一些资源和配置文件,通常一个jar包就是一个java程序;

war包:属于打包文件。即Web Application Archive,与jar基本相同。但通常表示一个Java的web应用程序的包。

tar.gz包:是压缩文件。经过gzip压缩后的tar文件,形成tar.gz包,扩展名为“xx.tar.gz”;

gzip:若干种文件压缩程序的简称

java 打包方法参数被修改 java打包的扩展名_xml

java 打包方法参数被修改 java打包的扩展名_java 打包方法参数被修改_02

二:用途不同

tar.gz包一般情况下都是源代码的安装包,需要先解压再经过编译、安装才能执行。总而言它是一个压缩文件。

三:通过assembly打tar.gz包

Java项目由maven管理构建时,最常见的是打jar包或war包。但时间项目中,有可能构建出zip包或tar包。可以通过maven-assembly构建tar.gz文件形式。

  • 在项目中新增assembly.xml配置文件

java 打包方法参数被修改 java打包的扩展名_maven_03

  • 在assembly.xml中定义打包信息
<?xml version="1.0" encoding="UTF-8"?>
<assembly>
    <formats>
        <!-- 打包的文件格式,支持 zip、tar.gz、tar.bz2、jar、dir、war -->
        <format>tar.gz</format>
    </formats>
    <fileSets>
        <!-- 指定要包含的文件集,可以定义多个fileSet-->
        <fileSet>
            <!-- 指定要包含的目录
            <directory>src/main/resources</directory>
            <!-- 指定当前要包含的目录的目的地-->
            <outputDirectory>/conf</outputDirectory>
            <!-- 包含的文件类型-->
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
                <include>**/*.MC</include>
                <include>**/*.ini</include>
            </includes>
            <filtered>true</filtered>
        </fileSet>
    </fileSets>
    <!-- 如果想把一些依赖库打到包里,可以用 dependencySets 元素-->
    <dependencySets>
        <dependencySet>
            <!-- 控制依赖包是否在打包进来时是否解开-->
            <unpack>false</unpack>
            <outputDirectory>/lib</outputDirectory>
            <useProjectArtifact>false</useProjectArtifact><!-- lib里面不包含当前project打包成的jar -->
            <useTransitiveFiltering>true</useTransitiveFiltering><!-- 只打包直接依赖的jar -->
        </dependencySet>
        <dependencySet>
            <unpack>false</unpack>
            <includes>
                <include>
                    com.alibaba.middleware.jingwei.custom:app1
                </include>
            </includes>
            <outputDirectory></outputDirectory>
        </dependencySet>
    </dependencySets>
</assembly>
  • 定义pom文件,并指定assembly.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>指定groupId</groupId>
        <!--建议使用表示您业务的名称-->
        <artifactId>sample</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <!--一个tar包绑定一个服务或者任务,建议使用服务(任务)名当做artifactId-->
    <artifactId>app1</artifactId>

    <dependencies>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                 <!--引入maven-assembly-plugin插件-->
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <!-- 绑定到 package 生命周期阶段上 -->
                        <phase>package</phase>
                        <goals>
                            <!-- 只运行一次 -->
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                 <!-- 配置描述文件路径 -->
                                 <descriptor>
                                    src/main/assembly/assembly.xml
                                </descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  • 在项目根目录执行打包命令即可输出tar.gz包:mvn package -DskipTests