官方提供 Maven
插件 sofa-ark-maven-plugin
可以将普通 Java 工程或者 Spring Boot 工程打包成标准格式 Ark 包
;基于 Fat Jar 技术,使用 java -jar
命令可以直接启动 Ark 包
。 Maven
插件坐标为:
Goals
sofa-ark-maven-plugin
插件提供 goal: repackage
, 可以将工程打包成可执行的 Ark 包
,如下配置:
<build>
<plugin>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-ark-maven-plugin</artifactId>
<executions>
<execution>
<id>default-cli</id>
<goals>
<goal>repackage</goal>
</goals>
</excution>
</executions>
</configuration>
</plugin>
</build>
完整的 sofa-ark-maven-plguin
插件配置模板如下:
配置项含义可以参考上述注释。
构建
在工程主 pom 中配置仓库地址,然后敲击 mvn deploy
命令,即可发布该 Ark 包
;需要强调的是,如果设置了 attach
为 true
, 也会发布到仓库,此外 Ark Biz
发布包默认会带上 classifier = ark-biz
,可以通过 bizClassifier
设置 ark biz
的 classifier ;
Ark 包典型目录结构
以 快速开始 为例,普通的 Spring Boot Web
应用打包生成的 Ark 包
目录结构如下:
.
├── META-INF
│ └── MANIFEST.MF
├── SOFA-ARK
│ ├── biz
│ │ └── sofa-ark-sample-springboot-ark-0.6.0-ark-biz.jar
│ └── container
│ └── sofa-ark-all-0.6.0.jar
├── com
│ └── alipay
│ └── sofa
│ └── ark
│ ├── bootstrap
│ ├── common
│ ├── loader
│ └── spi
└── conf
└── ark
└── bootstrap.properties
上述目录结构相关文件和目录说明如下:
META-INF/MANIFEST.MF
: 记录Ark
包元信息,其中最关键的信息是Ark
包的启动入口类Main-Class
;文件内容类似如下:
可以看到,Ark 包
启动入口类是 com.alipay.sofa.ark.bootstrap.ArkLauncher
SOFA-ARK/container
: 存放ark container
容器依赖包,实际上是下面的依赖包:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-ark-all</artifactId>
<version>${sofa.ark.version}</version>
</dependency>
SOFA-ARK/biz
: 存放所有的Ark Biz
包,因为 demo 工程中没有依赖其他的Ark Biz
, 因此只有自身的Ark Biz
SOFA-ARK/plugin
: 在该 demo 中,没有生成这个目录,因为工程中没有依赖其他的conf/ark/properties
: SOFAArk 的容器配置文件,在该 demo 中,设置了 SOFAArk 日志生成路径