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开关没有被添加到应用程序的命令行分析器中,不能使用。
代码
我们在这里讨论的部署配置代码可以在KivaKit的kivakit-configuration模块中找到:
<dependency>
<groupId>com.telenav.kivakit</groupId>
<artifactId>kivakit-configuration</artifactId>
<version>${kivakit.version}</version>
</dependency>
