用什么软件做网站最好全网引流推广
这里再介绍一种打包方式,依赖包分开打包,直接将需要部署的文件打包成一个要锁文件,比如kafka-roma-bin.tar.gz,这里需要两个文件,一个pom2.xml,一个package.xml。
pom2.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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/></parent><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>kafka-roma</artifactId><version>1.0</version><name>kafka-roma</name><description>kafka-roma</description><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.6.13</spring-boot.version><maven.test.skip>true</maven.test.skip></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.7.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.52</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><addMavenDescriptor>false</addMavenDescriptor><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>org.example.roma.KafkaRomaApplication</mainClass></manifest><manifestEntries><Class-Path>config/</Class-Path></manifestEntries></archive><excludes><classesDirectory>${project.basedir}/src/main/resources/</classesDirectory><exclude>*.properties</exclude><exclude>*.xml</exclude><exclude>*.yml</exclude></excludes></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>${project.basedir}/package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><id>deploy</id><phase>package</phase><goals><goal>run</goal></goals><configuration><target><untar src="${project.build.directory}/${project.name}-bin.tar.gz" dest="${project.build.directory}" overwrite="true" compression="gzip"/></target></configuration></execution></executions></plugin></plugins></build></project>
注意这里采用(没有使用dependencyManagement,主要原因是使用dependencyManagement时,无法拷贝指定版本的依赖,比如pom文件中提到的kafka-clients,这里需要2.7.2的版本,但是使用dependencyManagement后,打包的版本一直是3.0.2,这个问题后面再研究一下)
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/>
</parent>
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><addMavenDescriptor>false</addMavenDescriptor><manifest><addClasspath>true</addClasspath><classpathPrefix>lib/</classpathPrefix><mainClass>org.example.roma.KafkaRomaApplication</mainClass></manifest><manifestEntries><Class-Path>config/</Class-Path></manifestEntries></archive><excludes><classesDirectory>${project.basedir}/src/main/resources/</classesDirectory><exclude>*.properties</exclude><exclude>*.xml</exclude><exclude>*.yml</exclude></excludes></configuration>
</plugin>
这里采用maven-jar-plugin打包,需指定启动类,打包的路径以及需要排除的文件
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><configuration><descriptors><descriptor>${project.basedir}/package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin>
根据package.xml生成压缩文件
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.8</version><executions><execution><id>deploy</id><phase>package</phase><goals><goal>run</goal></goals><configuration><target><untar src="${project.build.directory}/${project.name}-bin.tar.gz" dest="${project.build.directory}" overwrite="true" compression="gzip"/></target></configuration></execution></executions>
</plugin>
将生成的压缩文件进行解压,根据个人需要,这部分可以去掉。
package.xml
<assembly><id>bin</id><formats><format>tar.gz</format></formats><dependencySets><dependencySet><useProjectArtifact>false</useProjectArtifact><outputDirectory>lib</outputDirectory><unpack>false</unpack></dependencySet></dependencySets><fileSets><fileSet><directory>${project.basedir}</directory><outputDirectory></outputDirectory><includes><include>README*</include><include>LICENSE*</include><include>NOTICE*</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/resources/</directory><outputDirectory>config</outputDirectory><includes><include>**/*.xml</include><include>*.yml</include><include>*.properties</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/bin/</directory><outputDirectory>bin</outputDirectory><includes><include>start.sh</include><include>stop.sh</include></includes></fileSet><fileSet><directory>${project.basedir}/src/main/bin/</directory><outputDirectory></outputDirectory><includes><include>run.bat</include><include>run.sh</include></includes></fileSet><fileSet><directory>${project.basedir}/cert/</directory><outputDirectory>cert</outputDirectory><includes><include>*.jks</include><include>*.crt</include></includes></fileSet><fileSet><directory>${project.build.directory}</directory><outputDirectory></outputDirectory><includes><include>*.jar</include></includes></fileSet></fileSets>
</assembly>
这里的配置配置比较简单,基本一看就知道,主要是设定打包的各个目录的文件构成。
打包
执行mvn clean package -f pom2.xml即可。