如何发布自己的 Artifacts 到 Maven 中央仓库

当我们越来越熟悉 Java 开发,可能也想发布自己的 artifacts 到 maven 中央仓库,那么该如何做呢?

The easiest way to upload another project is to use the Open Source Software Repository Hosting (OSSRH), which is an approved repository provided by Sonatype for any OSS Project that want to get their artifacts into the Central Repository.

从 maven 的官方文档可知是使用 Open Source Software Repository Hosting (OSSRH), 于是我们可以参考她的指南。

这份指南勾勒了发布工作的主要流程,分别是:

  1. Create a ticket with Sonatype
  2. Review Requirements
  3. Deployment
  4. Releasing to Central

创建 Sonatype 工单

Sonatype 使用 JIRA 管理请求,所以我们要创建 JIRA 帐号, 然后创建一个新工程工单。

  1. Create your JIRA account
  2. Create a New Project ticket

复核要求

为了确保中央仓库库中可用组件的最低质量水平,部署组件必须满足一些要求。这使组件的用户能够从中央仓库中提供的元数据中找到有关组件的所有相关细节。

这些要求是:

  1. Supply Javadoc and Sources
  2. Sign Files with GPG/PGP
  3. Sufficient Metadata
继续阅读

一种构建 JavaScript 库的方法

最近手头有个项目需要构建 JavaScript 库,核心需求是库既能用于传统的多页面,也能用于 Angular 的单页面。目前网络上暂时好像没有这类详细教程,反而是一些理论阐述的文章较多,经过一番研究后,我得到了一个适合自己的方法。

由于我希望库既能用于多页面,也能用于 Angular 单页面,所以需要支持 UMD 和 ES Harmony。由于 Angular 是使用 TypeScript 开发,最好还能提供用于 TypeScript 的声明文件。最原始的想法自然是手动按要求提供各种文件,但这样工作量比较大,也不容易扩展。那么还有什么容易的办法吗?有的,最核心的想法就是库的源码只写一份,然后用工具生成各种模块系统需要文件。具体的做法可能有差异,但理念是一样的。

从我的需求出发,我最终选择用 TypeScript 来写库的源码,基于脱敏的考虑,这里选择 TypeScript 文档中的示例代码来演示。

首先我们建立好库的源码目录结构并配置好源码管理:

1
2
3
4
5
6
simple-module-example
├── src
│   ├── LettersOnlyValidator.ts
│   ├── Validation.ts
│   ├── ZipCodeValidator.ts
│   └── index.ts

然后使用 npm init 生成 package.json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
  "name": "simple-module-example",
  "version": "1.0.0",
  "description": "A simple module example.",
  "main": "index.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "module",
    "example"
  ],
  "author": "Meiliang Dong",
  "license": "MIT"
}
继续阅读

Linux 使用笔记(三)

1.系统迁移和备份

A:为了数据安全,我们需要对系统备份,换新电脑或者更换云服务时我们需要迁移系统。Linux 系统备份和迁移的方法很多,我这里打算使用 tar 。

系统备份

首先是根据自己的实际情况列出需要备份的目录,通常有:

  • /etc/
  • /home/
  • /var/spool/mail/
  • /var/spool/cron/
  • /root
  • /usr/local/bin

然后使用 tar 命令打包:

1
2
3
tar -jcv -f /backups/backup-system-20200902.tar.bz2 \
> --exclude=/root/*.bz2 --exclude=/root/*.gz --exclude=/home/loop* \
> /etc /home /var/spool/mail /var/spool/cron /root /usr/local/bin

系统恢复

首先可以将备份解压到 /tmp 目录,之后使用 rsync 命令复制到对应目录便可恢复。

1
2
3
4
5
6
7
tar -jxv -f /backups/backup-system-20200902.tar.bz2 -C /tmp
rsync -avuz /tmp/etc/ /etc
rsync -avuz /tmp/home/ /home
rsync -avuz /tmp/var/spool/mail/ /var/spool/mail
rsync -avuz /tmp/var/spool/cron/ /var/spool/cron
rsync -avuz /tmp/root/ /root
rsync -avuz /tmp/usr/local/bin/ /usr/local/bin
继续阅读