一、基本介绍
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>