一、基本介绍
Maven-jar-plugin是Maven自带的一个插件,它主要用于将项目打包成jar包,一般情况下,Maven执行package命令时就会默认调用该插件完成jar包生成的工作。 使用Maven-jar-plugin进行打包可以大大降低打包工作的难度和复杂度。使用该插件可以实现以下功能:
- 生成标准格式的jar包;
- 过滤构建输出文件;
- 指定程序入口;
- 指定manifest文件;
- 设置jar包的依赖项,用于引用其他组件等等。 使用Maven-jar-plugin进行打包的代码示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>jarName</finalName>
</configuration>
</plugin>
</plugins>
</build>
二、生成标准格式的jar包
Maven-jar-plugin默认以Maven项目的主代码目录作为jar包的源文件,将其打包成标准格式的jar包,该jar包可以直接部署到Maven的本地仓库或远程仓库。
若需要特定目录下的文件作为源文件,可以通过配置build
元素下的resources
或sourceDirectory
元素来指定。
生成标准格式的jar包的代码示例:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>jarName</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
三、过滤构建输出文件
通过使用Maven-jar-plugin,我们可以方便地过滤掉某些不需要打包的文件或目录,使用<excludes>
或<includes>
指定要过滤的文件或目录,它们既可以用通配符匹配模式,也可以用正则表达式匹配模式。
例如,要过滤掉target目录下所有文件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<excludes>
<exclude>target</exclude>
</excludes>
</configuration>
</plugin>
四、指定程序入口
在打包过程中,Maven-jar-plugin可以通过mainClass
参数指定程序的入口点,这样打包后的jar包可以直接从命令行运行,而不需要手动指定入口点。开发者按照下面的示例即可实现指定程序入口:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>jarName</finalName>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<mainClass>org.example.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
五、指定manifest文件
Maven-jar-plugin可以通过配置manifest
元素来指定产生的jar包的manifest文件,manifest文件是一个文本文件,它定义了程序包的一些基本信息,例如程序入口、版本号、依赖库等。开发者可以按照以下示例代码来定义manifest文件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>jarName</finalName>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
六、设置jar包的依赖项
Maven-jar-plugin支持在打包过程中将依赖项打包到生成的jar包内。开发者可以在pom.xml中指定依赖项,然后使用<includes>
元素将指定的依赖项打包到生成的jar包内。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<finalName>jarName</finalName>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<manifestEntries>
<Class-Path>lib/dependency1.jar lib/dependency2.jar</Class-Path>
</manifestEntries>
<addClasspath>true</addClasspath>
</archive>
<includes>
<include>com.example.code:dependency1</include>
<include>com.example.code:dependency2</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>