利用assembly.xml,打包maven项目

本文介绍了如何使用Maven插件进行不同类型的打包任务。包括使用maven-jar-plugin生成jar包并排除特定文件,以及利用maven-assembly-plugin自定义assembly.xml文件来创建tar.gz等格式的归档文件。

打包插件maven-assembly-plugin使用

1.     maven -jar- plugin 打出来是jar包,maven -war- plugin 打出来是war包。


<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId> ----打jar包
	<version>2.4</version>
	<configuration>
			<excludes>--排除classpath下文件
			<exclude>**/*.properties</exclude>
			<exclude>**/*.xml</exclude>
			<exclude>META-INF/**/*</exclude>
			</excludes>
	</configuration>
</plugin>

2.   自定义格式包assembly.xml, maven-assembly-plugin打包插件

<plugin>
	<artifactId>maven-assembly-plugin</artifactId>
	<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>--assembly.xml 路径
	</configuration>
	<executions>
		<execution>
			<id>make-assembly</id>
			<phase>package</phase>
			<goals>
					<goal>single</goal>----只运行一次
			</goals>
		</execution>
	</executions>
</plugin>


<assembly>
	<id>assembly</id>---名字
	<formats>
		<format>tar.gz</format>--打包格式
	</formats>
	<includeBaseDirectory>true</includeBaseDirectory>
	<fileSets>
		<fileSet>
			<directory>target/classes/META-INF/conf</directory>这个路径				<outputDirectory>conf/META-INF/conf</outputDirectory>--输出到这个路径下
			<fileMode>0644</fileMode>---linux权限
		</fileSet>
			<directory>target/classes</directory>--这个目录下,不会遍历下层目录
			<outputDirectory>conf</outputDirectory>
			<fileMode>0644</fileMode>
			<includes>--只负责这些目标文件
				<include>*.properties</include>
				<include>*.xml</include>
			</includes>
		</fileSet>
	</fileSets>
	<dependencySets>
		<dependencySet>
			<outputDirectory>lib</outputDirectory>---输出到lib路径
		</dependencySet>
	</dependencySets>
</assembly>


### 配置 `assembly.xml` 文件 在 Maven 中,`assembly.xml` 是用来定义如何打包项目的自定义描述符。此文件允许指定哪些文件应被打包以及它们应该如何被处理和组装。 #### 定义 Assembly 描述符 为了创建一个自定义的装配描述符,在项目根目录下建立一个新的 XML 文件并命名为 `assembly.xml` 或者其他名称,只要确保该路径能在 POM 的插件配置中正确引用即可[^1]。 ```xml <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-1.1.3.xsd"> <!-- id属性用于区分不同的 assembly --> <id>distribution-package</id> <!-- 格式化输出的结果,默认为 tar.gz --> <formats> <format>zip</format> </formats> <!-- 包含的内容 --> <fileSets> <fileSet> <directory>${project.basedir}/src/main/resources/config</directory> <outputDirectory>/config</outputDirectory> <includes> <include>*.properties</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>/lib</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> </fileSets> </assembly> ``` 上述代码片段展示了如何设置一个简单的 `assembly.xml` 来收集特定资源文件夹中的 `.properties` 文件到 `/config` 路径,并将构建后的 JAR 文件放入最终分发包内的 `/lib` 目录中。 #### 修改 `pom.xml` 使用 Assembly 插件 为了让 Maven 知道要应用这个新的装配描述符,还需要更新 `pom.xml` 文件以包含对 `maven-assembly-plugin` 的引用: ```xml <build> ... <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.4.2</version> <configuration> <descriptors> <descriptor>src/main/assembly/assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> ... </build> ``` 这段配置指定了当执行 `mvn package` 命令时会触发单次装配操作,它将会读取位于 `src/main/assembly/assembly.xml` 下面所定义好的规则来进行打包工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值