ballerina 学习四 如何进行项目结构规划
备注:
* ballerina 程序员可以将代码放到一个文件或者一个项目目录
* 一个ballerina program是一个已经编译以及链接的二进制文件
* package是一个包含ballerina 源码文件的目录
* repository是一个版本化的已经编译或者源码
* project自动管理包以及程序的集合
1. program
程序是运行时可执行的,以balx 为扩展名,程序包必须包含一个main() 函数(一个进程的进入点),或者一个service (网络可访问的api)
参考(包含一个main 以及service demo.bal):
import ballerina/http;
import ballerina/io;
function main (string... args) {
io:println("Hello, World!");
}
service<http:Service> hello bind { port: 9090 } {
sayHello (endpoint caller, http:Request req) {
http:Response res = new;
res.setPayload("Hello, World!");
_ = caller->respond(res);
}
}
运行:
ballerina run demo.bal 如何只包含service 可以使用
ballerian run -s demo.bal
构建:
ballerina build demo.bal
2. package
包可以实现共享,以及重用
包具有以下特点:
a. 可以有一个可选的版本
b. 但是没有版本的包是不能发布到一个仓库实现代码的共享
c. 包的使用是以 org-name/package-name 格式引用的,org-name在仓库中做为命名空间
包的导入格式:
import [<org-name>]/<package-name> her.package [ [version <string>] [as <identifier>] ];
最后一个包的名称,或者距离最近一个.的字符串为包的标示,可以用来进行包中服务或者共享函数的使用,同时可以
使用as 进行别名命名
比如:
import ballerina/http; http: 做为标示符
import tyler/net.http.exception exception: 做为标示符
参考代码:
import ballerina/http;
# The 'Service' object comes from the imported package.
service<http:Service> hello bind { port:9090 } {
# The 'Request' object comes from the imported package.
sayHello (endpoint caller, http:Reqeust req) {
...
}
}
import ballerina/http as network;
service<network:Service> hello bind { port:9090 } {
# The 'Request' object comes from the imported package.
sayHello (endpoint caller, network:Reqeust req) {
...
}
}
包的版本依赖:
如下,如果没有使用的是latest
import tyler/http version 3.0.1;
导入不同版本的包
import tyler/http version 3.0.1 as identity3;
import tyler/http version 4.5.0 as identity4;
function main(string... args) {
identity3:Person x = identity3:getPerson();
identity4:Person y = identity4:getPerson();
}
3. project
project 具有如下特点:
* 一个project 是一个目录自动会进行包以及程序的管理
* 同时包含一个用户管理清单文件 Ballerina.toml
* 一个托管的.ballerina/文件实现元数据以及cache
* project 的repository进行以来的存储
a. 创建project
ballerina init -i 按照提示操作即可
b. 创建一个包
每一个根目录子目录都是一个单独的包,子目录名称就是包的名称
.ballerina/, tests/, and resources/ 做为保留目录,不会做为包
一个参考的结构
/
.gitignore
Ballerina-lock.toml # Generated during build, used to rebuild identical binary
Ballerina.toml # Configuration that defines project intent
.ballerina/ # Internal cache management and contains project repository
# Project repository is built or downloaded package dependencies
main.bal # Part of the “unnamed” package, compiled into a main.balx
# You can have many files in the "unnamed" package, though unadvisable
package1/ # The source in this directory will be named “<org-name>/package1”
Package.md # Optional, contains descriptive metadata for display at Ballerina Central
*.bal # In this dir and recursively in subdirs except tests/ and resources/
[tests/] # Package-specific unit and integration tests
[resources/] # Package-specific resources
*.jar # Optional, if package includes native Java libraries to link + embed
packages.can.include.dots.in.dir.name/
Package.md
*.bal
*.jar
[tests/]
[resources/]
*.jar # Optional, if package includes native Java libraries to link + embed
[tests/] # Tests executed for every package in the project
[resources/] # Resources included with every package in the project
target/ # Compiled binaries and other artifacts end up here
main.balx
package1.balo
packages.can.include.dots.in.dir.name.bal
c. 构建一个project
ballerina build
d. 构建一个包
ballerina build package-name
4. repository
仓库是包的集合,仓库帮助团队或者组织进行管理他们代码的版本以及资源
存在四类仓库:
a. project 仓库,这个是本地的在 ./ballerina 文件夹
b. home 仓库这个目录在开发者的本地
c. system 仓库 一个特殊的仓库,包含在ballerian 的分发包中,主要是ballerian 的一个核心包
d. ballerina 中心仓库,http://central.ballerina.io
仓库的操作:
ballerina install
ballerina push --repository=home
ballerina pull <org-name>/<package-name>[:<version>] [--repository=<url>] (remote)
ballerina push <org-name>/<package-name>:<version> [--repository=home|url](remote)
ballerina remove <org-name>/<package>:<version> [--repository=home|<url>]
5. 参考资料
https://ballerina.io/learn/how-to-structure-ballerina-code/
ballerina 学习四 如何进行项目结构规划的更多相关文章
- ballerina 学习二十六 项目docker 部署&& 运行(二)
ballerina 从发布,到现在官方文档的更新也是很给力的,同时也有好多改进,越来越好用了 可以参考官方文档 https://ballerina.io/learn/by-guide/restful- ...
- spring学习(四) ———— 整合web项目(SSH)
清楚了spring的IOC 和 AOP,最后一篇就来整合SSH框架把,记录下来,以后应该会用的到. --WH 一.web项目中如何使用spring? 当tomcat启动时,就应该加载spring的配置 ...
- ballerina 学习二十五 项目docker 部署&& 运行
ballerina 官方提供了docker 的runtime,还是比较方便的 基本项目创建 使用cli创建项目 按照提示操作就行 ballerina init -i 项目结构 添加了dockerfil ...
- shiro基础学习(四)—shiro与项目整合
一.认证 1.配置web.xml 2.配置applicationContext.xml 在applicationContext.xml中配置一个bean,ID和上面的过滤器的名称一致. ...
- Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档
0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...
- 实验十四:团队项目评审&课程学习总结
项目 内容 作业所属课程 所属课程 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 任务一:团队项目审核已完成.项目验收过程意见表已上交. 任务二:课程学习 ...
- ballerina 学习二十七 项目k8s部署&& 运行
ballerina k8s 部署和docker 都是同样的简单,编写service 添加注解就可以了 参考项目 https://ballerina.io/learn/by-guide/restful- ...
- 十一、Android学习第十天——项目开始(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...
- VUE2 第六天学习--- vue单文件项目构建
阅读目录 VUE2 第六天学习--- vue单文件项目构建 回到顶部 VUE2 第六天学习--- vue单文件项目构建 VUE单文件组件在Vue项目中,然后使用 new Vue({el: '#cont ...
随机推荐
- tags
运行tags在你的.vimrc 中加一个路径,set tags=/home/lh/1407k/arm/tags 注意此文件下的东西要注销必须用“执行一个ctags -R *;ctrl + ]过去,ct ...
- SQL , MERGE 简意
- Ubuntu下压缩解压文件
一般来说ubuntu 下带有tar 命令,可以用来解压和压缩之用.但是我们经常要与win下用户打交道,所以要安装一些解压工具如:rar zip 等命令. 如果要需要用到zip工具那么可以: sudo ...
- C++复习10.对象的初始化拷贝析构函数
对象的初始化.拷贝构造和析构函数 20131002 构造函数.析构函数.赋值函数是类的基本函数.每一个类只有一个析构函数,但是可以有多个构造函数.多个赋值函数.一般如果类中没有显示的声明和定义上述函数 ...
- SQL 二进制和字符互转
1.二进制转为字符串 ALTER function varbin2hexstr( ) )) as begin ),@i int select @re='',@i=datalength(@bin) ), ...
- 严重:Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener
mave项目换了一个新的工作空间时出现的问题 原因: 其实是你的jar文件没有同步发布到自己项目的lib目录中(如果你是用Maven进行构建的话) 可以试试 下面的办法 解决方案: 项目点击右键 点击 ...
- Linux服务器上安装tomcat
安装软件 : apache-tomcat-9.0.0.M1.tar.gz(下载地址http://tomcat.apache.org/) 步骤一 Tomcat是其中一个开源的且免费的java Web服务 ...
- 什么是web?什么是web服务器?什么是应用服务器?
1.什么是Web? 简单来说,Web就是在Http协议基础之上,利用浏览器进行访问的网站.目前来看最常用的意义是指在 Intenet 上和 HTML 相关的部分.换句话说,目前在 Intenet 上通 ...
- vue.js 源代码学习笔记 ----- 工具方法 perf
import { inBrowser } from './env' export let mark export let measure if (process.env.NODE_ENV !== 'p ...
- c# 字符串验证(邮箱、电话、数字、ip、身份证等)
using System; using System.Text.RegularExpressions; namespace HuaTong.General.Utility { /// <summ ...