开源软件名称(OpenSource Name):blinkfox/jpack-maven-plugin开源软件地址(OpenSource Url):https://github.com/blinkfox/jpack-maven-plugin开源编程语言(OpenSource Language):Java 93.0%开源软件介绍(OpenSource Introduction):jpack-maven-plugin
一、特性
二、集成本插件我将以一个新建的 SpringBoot 2.3.1.RELEASE 的 web 项目 jpack-demo,版本 1. 最简示例首先,在项目的 Maven <build>
<plugins>
<!-- 引入 jpack-maven-plugin 插件 -->
<plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<version>1.5.5</version>
</plugin>
</plugins>
</build> 然后,执行如下 jpack 命令: mvn clean package jpack:build
然后,执行成功之后,你将在 Maven 控制台看到如下输出: [INFO] ---------------------------------- jpack start packing... ---------------------------------
__ __
|__|______ _____ ____ | | __
| |\____ \ \__ \ _/ ___\ | |/ /
| || |_> > / __ \_\ \___ | <
/\__| || __/ (____ / \___ >|__|_ \
\______||__| \/ \/ \/ v1.5.5
[INFO] 【Chart构建 -> 跳过】没有配置【<helmChart>】的构建目标【<goals>】,将跳过 HelmChart 相关的构建.
[INFO] 【构建打包 -> 成功】制作 linux 下的部署压缩包完成.
[INFO] 【构建打包 -> 成功】制作 windows 下的部署压缩包完成.
[INFO] 【构建镜像 -> 默认】将使用 jpack 默认提供的 Dockerfile 文件来构建镜像.
[INFO] 【构建镜像 -> 进行】正在构建【com.blinkfox/jpack-demo:1.0.0】镜像...
[INFO] 【构建镜像 -> 成功】构建【com.blinkfox/jpack-demo:1.0.0】镜像完毕,镜像ID: d761303ae702
[INFO] --------------------- jpack has been packaged to end. [costs: 6.57 s] --------------------- 成功之后就可以在
构建成功之后,可以在 docker 中键入 REPOSITORY TAG IMAGE ID CREATED SIZE
com.blinkfox/jpack-demo 1.0.0 c8f91718f286 About a minute ago 123MB
openjdk 8-jdk-alpine a3562aa0b991 6 days ago 105MB
... 2. 另一种简单配置你也可以在 jpack 的插件中配置执行的阶段,就不用再手动输入 <build>
<plugins>
<!-- 引入 jpack-maven-plugin 插件 -->
<plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build> 然后只需输入 3. 自定义构建阶段只需要在 <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<executions>
<execution>
<goals>
<goal>build</goal>
</goals>
<phase>install</phase>
</execution>
</executions>
</plugin> 然后,只需输入 三、各平台包结构介绍1. Windows生成的 Windows 下的
注意事项:
2. Linux生成的 Linux 下的
注意事项:
3. Docker如果不做任何配置的话,默认只是构建最新的 Docker 镜像,而不会生成部署需要的 <build>
<plugins>
<!-- 引入 jpack-maven-plugin 插件 -->
<plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<docker>
<extraGoals>
<!-- 构建 docker 镜像之外的额外目标,可以填写 save 值.
save 表示导出镜像的离线包. -->
<param>save</param>
</extraGoals>
</docker>
</configuration>
</plugin>
</plugins>
</build> Maven 构建成功之后,就可以在
注意事项:
命令参考: 使用以下命令是用来启动镜像的,仅供参考: 简单的方式: docker run -d -p 8080:8080 com.blinkfox/jpack-demo:1.0.0 稍等一会儿,访问 http://127.0.0.1:8080 即可访问服务。 带参数的方式: 以下以修改服务端口的示例来演示,修改 SpringBoot 的参数示例,实际上,你可以再 docker run -d -p 7070:7070 -e JVM_OPTS="-Xms512m -Xmx1024m" -e PROGRAM_ARGS="--server.port=7070" com.blinkfox/jpack-demo:1.0.0 稍等一会儿,访问 http://127.0.0.1:7070 即可访问服务。 4. Helm Chart
<plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<helmChart>
<!-- helm chart 源文件的目录位置,目前仅支持本地文件的绝对或相对路径. -->
<location>jpack-chart</location>
<!-- 要推送 helm chart 所在仓库的 API URL 地址. -->
<chartRepoUrl>http://registry.yourcompany.com:5000/api/chartrepo/blinkfox/charts</chartRepoUrl>
<!-- 该值表示 save 导出时,是否使用本插件 Docker 构建的镜像,将其也导出到最终的镜像包中,默认为 false. -->
<useDockerImage>true</useDockerImage>
<!-- 构建目标,这里设置了 chart 打包、推送和导出. -->
<goals>
<param>package</param>
<param>push</param>
<param>save</param>
</goals>
<!-- 推送 Chart 到 Harbor 中的 registry 用户密码信息,可以进行 AES 加密. -->
<registryUser>
<username>your-username</username>
<password>your-password</password>
</registryUser>
</helmChart>
</configuration>
</plugin>
离线应用包内容结果如下:
四、jpack configuration 配置详解jpack 的所有配置参数都非必填或者有默认值。以下是关于 jpack Maven 插件 1. platforms用于配置打包时可以打包哪些平台的包。默认为 Windows、Linux 和 Dokcer 三个平台,如果打包的环境没有或没开启 Docker,则会自动忽略 Docker 下的构建及后续的打包等操作。这三个平台的值大小写均可。 示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- 打包哪些平台的包,不填写则代表所有平台. 目前支持 Windows、Linux 和 Dokcer 三个平台(大小写均可).
这里作为示例,注释 Docker 的方式,就表明只打包 Windows 和 Linux 平台下的包。 -->
<platforms>
<param>Windows</param>
<param>Linux</param>
<!-- <param>Docker</param> -->
</platforms>
</configuration>
</plugin> 2. vmOptions用于配置 JVM 运行所需的参数选项,作用于各个平台下。默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些 JVM 选项参数。 示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- JVM 运行所需的选项参数. -->
<vmOptions>-Xms1024m -Xmx2048m</vmOptions>
</configuration>
</plugin> 3. programArgs用于配置 SpringBoot 运行所需的参数,作用于各个平台下。默认为空,如果配置了对应的值,生成的部署包命令行中将会追加这些程序运行参数。
示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- 所集成的 SpringBoot 服务程序运行所需的参数. -->
<programArgs>--server.port=7070</programArgs>
</configuration>
</plugin> 4. configFiles用来复制诸如
示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- 需要复制到部署包中 config 目录下的 yml 或者 .properties 文件的配置文件路径,
它的值可以配置多个,可以是相对路径、绝对路径具体的目录或文件,也可以是网络资源. -->
<configFiles>
<param>src/test/resources/application.yml</param>
<param>src/test/resources/application-local.yml</param>
</configFiles>
</configuration>
</plugin> 5. skipError遇到错误时是否跳过错误。默认是不填写或者
示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- 遇到错误时是否跳过错误,目前仅Docker 下有用到此配置。默认是不填写或者 default,程序会自动处理,不需要你额外关注;
true的话,会忽略所有异常;false的话,遇到错误就直接报错。 -->
<skipError>default</skipError>
</configuration>
</plugin> 6. cleanPackDir表示执行打包命令是否清除之前生成的发布包数据,默认清除( 7. generateBinDir表示是否生成 Windows、Linux 下默认的 8. copyResources系统发布时,发布包中必然会有很多除了
示例如下: <plugin>
<groupId>com.blinkfox</groupId>
<artifactId>jpack-maven-plugin</artifactId>
<!-- 此处内容省略. -->
<configuration>
<!-- 需要copy 哪些资源(from 的值可以是目录或者具体的相对、绝对或网络资源路径)到部署包中的某个目录;
to 的值只能是目录,为空或者 '.' 或者 '/' 符号则表示复制到各平台包的根目录中,否则就复制到具体的目录下 -->
<copyResources>
<!-- 复制本项目根目录的 README.md 到各平台包的根目录中. -->
<copyResource>
<from>README.md</from>
<to>.</to>
</copyResource>
<!-- 复制本项目 docs 文件夾到各平台包的 docs 目录中. -->
<copyResource>
<from>docs</from>
<to>docs</to>
</copyResource>
<!-- 复制本项目上层目录的 hello.pdf 文件到各平台包的 abc/def 目录中(会自动创建此目录). -->
<copyResource>
<from>../test-dir/hello.pdf</from>
<to>abc/def</to>
</copyResource>
<!-- 复制网络资源 http://xxx.com/image.png 文件到各平台包的根目录中. -->
<copyResource>
<from>http://xxx.com/image.png</from>
<to>/</to>
</copyResource>
</copyResources>
</configuration>
</plugin> 9. excludeFiles也需生成的可部署包中,某些文件资源对你而已,显得有些多余,你想排除它们。此时你可以使用 示例如 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论