官方提供 Maven 插件 sofa-ark-maven-plugin 可以将普通 Java 工程或者 Spring Boot 工程打包成标准格式 Ark 包 ;基于 Fat Jar 技术,使用 java -jar 命令可以直接启动 Ark 包Maven 插件坐标为:

Goals

sofa-ark-maven-plugin 插件提供 goal: repackage, 可以将工程打包成可执行的 Ark 包,如下配置:

  1. <build>
  2. <plugin>
  3. <groupId>com.alipay.sofa</groupId>
  4. <artifactId>sofa-ark-maven-plugin</artifactId>
  5. <executions>
  6. <execution>
  7. <id>default-cli</id>
  8. <goals>
  9. <goal>repackage</goal>
  10. </goals>
  11. </excution>
  12. </executions>
  13. </configuration>
  14. </plugin>
  15. </build>

完整的 sofa-ark-maven-plguin 插件配置模板如下:

配置项含义可以参考上述注释。

构建

在工程主 pom 中配置仓库地址,然后敲击 mvn deploy命令,即可发布该 Ark 包;需要强调的是,如果设置了 attachtrue, 也会发布到仓库,此外 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 日志生成路径