tar包、jar包、war包、tai.gz包
一:文件类型不同
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”;
二:用途不同
tar.gz包一般情况下都是源代码的安装包,需要先解压再经过编译、安装才能执行。总而言它是一个压缩文件。
三:通过assembly打tar.gz包
Java项目由maven管理构建时,最常见的是打jar包或war包。但时间项目中,有可能构建出zip包或tar包。可以通过maven-assembly构建tar.gz文件形式。
在项目中新增assembly.xml配置文件
在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>
原文链接:https://blog.csdn.net/qq_39416311/article/details/103097328