enhance:更新Maven插件文章。

This commit is contained in:
徐涛 2021-06-16 11:50:09 +08:00
parent fee2a6f933
commit 4d0901566a

View File

@ -49,6 +49,9 @@ Maven是一个依赖插件执行的框架每个任务实际上都是由插件
</build> </build>
``` ```
!!! info "plugins和pluginManagemen标签的区别"
`plugins`和`pluginManagement`两个标签都是`build`标签的直接子元素而且大部分POM文件中都可以看到它们。但是这两个标签的使用是有区别的其中`pluginManagement`标签所声明的插件并不会被Maven所使用它的作用主要是提供对于所有继承了当前POM的子POM中所使用的插件的版本。而`plugins`则是将插件实实在在的应用到Maven生命周期中的。换句话说如果项目是由多个POM文件组成的那么可以使用`pluginManagement`来约束各个POM文件中所使用的插件版本如果只有一个POM文件那么可以仅使用`plugins`声明插件的使用即可。
## maven-compiler-plugin ## maven-compiler-plugin
Compiler插件主要用来编译项目源码。在POM中一般用来配置编译所接受的源码版本和编译后能够适应的Java运行时版本。代码版本的配置有两种方式一种是通过配置项指定一种是通过配置插件指定。 Compiler插件主要用来编译项目源码。在POM中一般用来配置编译所接受的源码版本和编译后能够适应的Java运行时版本。代码版本的配置有两种方式一种是通过配置项指定一种是通过配置插件指定。
@ -323,3 +326,104 @@ Exec插件主要用来支持Maven快速启动Java程序可以在不打包为J
</configuration> </configuration>
</plugin> </plugin>
``` ```
## jpackage-maven-plugin
jpackage插件是一个第三方插件用来调用JDK 14以后引入的jpackage命令来将经过裁剪生成的最简运行时打包为可在不同平台上直接运行的程序包的。jpackage插件值提供了一个目标可供使用`jpackage:jpackage`。因为不是所有的JDK都带有jpackage命令所以在使用jpackage插件的时候需要配置的内容主要是jpackage所在的JDK目录以及所需要打包的Runtime。
以下是一个打包已经使用jlink裁剪好的Runtime的示例。
```xml
<plugins>
<plugin>
<groupId>com.github.akman</groupId>
<artifactId>jpackage-maven-plugin</artifactId>
<version>0.1.2</version>
<configuration>
<!--
设定jpackage命令所在的JDK位置如果不设定这一配置插件将会按照以下顺序寻找jpackage工具。
- 使用Toolchain插件定义的JDK目录
- 使用系统环境变量JAVA_HOME定义的JDK目录
- 由系统环境变量PATH定义的可执行文件目录
-->
<toolhome>${env.JPACKAGE_HOME}</toolhome>
<!--
定义生成的文件放置的位置
-->
<dest>${project.build.directory}/jpackage</dest>
<!--
定义存放应用的子目录名称
-->
<name>appname</name>
<!--
定义要生成的应用包的类型,可选值有:
- PLATFORM根据当前平台确定
- IMAGE生成Linux或macOS使用的应用镜像
- EXE生成可执行文件
- MSI生成Windows应用安装包
-->
<type>IMAGE</type>
<!--
定义已经由jlink工具生成的运行时所在的位置如果没有定义这个配置项
那么插件将会使用以下参数调用jlink生成一个运行时
- strip-debug
- no-header-files
- no-man-pages
- strip-native-commands
-->
<runtimeimage>${project.build.directory}/jlink/runtime-image</runtimeimage>
<!--
定义要生成的应用的版本
-->
<appversion>1.0</appversion>
<!--
定义索要生成的应用的版权信息
-->
<copyright>Copyright</copyright>
<!--
定义所要生成的应用的描述信息
-->
<description>Description</description>
<!--
定义索要生成的应用的制作商信息
-->
<vendor>Vendor</vendor>
<!--
定义索要生成的应用要使用的图标所在的位置
-->
<icon>${project.basedir}/config/jpackage/resources/appname.ico</icon>
<!--
定义应用的主模块名称,以及应用的主类。当设置了这个配置项之后,应用的主模块会被连接到运行时镜像,
这里可以填写的内容可以是模块名称也可以是Jar包名称但不能同时使用。
-->
<module>appModuleName/appClassName</module>
<!--
定义主函数运行所需的参数
-->
<arguments>--opt</arguments>
<!--
定义运行时所需要的参数
-->
<javaoptions>-Dfile.encoding=UTF-8 -Xms256m -Xmx512m</javaoptions>
<!--
定义其他额外的启动器
-->
<addlaunchers>
<addlauncher>
<name>appname-cli</name>
<module>appModuleName/appClassName</module>
<arguments>--help</arguments>
<javaoptions>-Xms256m -Xmx512m</javaoptions>
<appversion>1.0</appversion>
<icon>${project.basedir}/config/jpackage/resources/appname-cli.ico</icon>
<winconsole>true</winconsole>
</addlauncher>
</addlaunchers>
<!--
定义jpackage所使用的资源目录名称
-->
<resourcedir>${project.basedir}/config/jpackage/resources</resourcedir>
</configuration>
</plugin>
</plugins>
```