KivaKit的部署情况(附代码实例)

64 阅读1分钟

KivaKit的部署情况

KivaKit应用程序可以使用设置api进行配置,但有一种更简单的方法可以直接在Application中配置应用程序进行部署。默认情况下,Application会查找开关*-deployment=[deployment-name]。如果开关存在并且可以找到部署设置,KivaKit 将把命名的部署中的所有设置对象加载到全局设置存储中,在那里可以用require()* 访问它们。

部署可以被打包成一个有阴影的jar文件,这样,对于一个运营团队来说,应用程序的使用就非常简单:

java -jar my-application.jar -deployment=local

为了发现哪些打包的部署是可用的,KivaKit会在应用程序类旁边的部署包中寻找。然后,deployments包中的每个子包都是一个部署,其中部署的名称就是包的名称。部署描述包含在包中一个名为Deployment.metadata的文件中。部署包还包含一组一个或多个*.properties*文件。每个设置文件都描述了一个设置对象,如组件和设置中所述:

└── MyApplication.java
└── deployments
    ├── local
    │   ├── Deployment.metadata
    │   └── Database.properties
    ├── development
    │   ├── Deployment.metadata
    │   └── Database.properties
    ├── staging
    │   ├── Deployment.metadata
    │   └── Database.properties
    └── production
        ├── Deployment.metadata
        └── Database.properties

以这种方式将设置信息打包在一个*.jar*文件中是非常方便的。为了支持外部配置,KIVAKIT_DEPLOYMENTS_FOLDER系统属性也可以用来指定从一个部署文件夹加载设置,如:

java -jar my-application.jar -DKIVAKIT_DEPLOYMENT_FOLDER=$HOME/my-application/deployments/local

如果发现一个包含部署的包或外部文件夹,需要使用*-deployment*开关。如果不能选择一个部署,将产生一个类似于以下的使用信息:

┏--------- COMMAND LINE ERROR(S) ---------------
┋     ○ Required switch -deployment not found
┗-----------------------------------------------

KivaKit 1.1.0 (beryllium alpaca)

Usage: MyApplication 1.1.0 <switches> <arguments>

This is my application.

Arguments:

  <none>

Switches:

  Required:

  -deployment=Deployment (required) : The deployment configuration to run

    ○ local - Run on localhost
    ○ development - Run on development cluster
    ○ staging - Run on staging cluster
    ○ production - Run in production environment
  
  Optional:

  -port=Integer (optional) : The port to use

如果没有可用的部署,-deployment开关没有被添加到应用程序的命令行分析器中,不能使用。

代码

我们在这里讨论的部署配置代码可以在KivaKitkivakit-configuration模块中找到:

<dependency>
    <groupId>com.telenav.kivakit</groupId>
    <artifactId>kivakit-configuration</artifactId>
    <version>${kivakit.version}</version>
</dependency>