cellar

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cellar

Cellar

Use cellar to look up the API of JVM dependencies instead of guessing or manually downloading, unpacking, and searching JAR files for type signatures.
使用cellar查询JVM依赖的API,无需猜测或手动下载、解压并搜索JAR文件来查找类型签名。

Prerequisites

前提条件

Run
cellar --version
to verify cellar is on PATH. If not found, the user needs to install it: https://github.com/VirtusLab/cellar#installation
运行
cellar --version
验证cellar是否在PATH中。如果未找到,用户需要安装它:https://github.com/VirtusLab/cellar#installation

Project-aware commands (run from project root)

项目感知命令(从项目根目录运行)

Query the current project's code and all its dependencies. Cellar auto-detects the build tool (Mill, sbt, scala-cli).
cellar get [--module <name>] <fqn>       # single symbol (signature, members, docs)
cellar list [--module <name>] <package>  # list symbols in a package or class
cellar search [--module <name>] <query>  # case-insensitive substring search
  • Mill/sbt projects:
    --module
    is required (e.g.
    --module lib
    ,
    --module core
    )
  • scala-cli projects: omit
    --module
  • --no-cache
    : skip classpath cache, re-extract from build tool
  • --java-home <path>
    : override JRE classpath
  • -l
    ,
    --limit <N>
    : max results for
    list
    /
    search
    (default: 50), max members for
    get
  • --hide-inherited
    : show only members declared on the type itself (
    get
    commands)
  • --group-inherited
    : group members by declaring type with section headers (
    get
    commands)
查询当前项目的代码及其所有依赖。Cellar会自动检测构建工具(Mill、sbt、scala-cli)。
cellar get [--module <name>] <fqn>       # 单个符号(签名、成员、文档)
cellar list [--module <name>] <package>  # 列出包或类中的符号
cellar search [--module <name>] <query>  # 不区分大小写的子串搜索
  • Mill/sbt项目:必须使用
    --module
    (例如
    --module lib
    --module core
  • scala-cli项目:省略
    --module
  • --no-cache
    :跳过类路径缓存,从构建工具重新提取
  • --java-home <path>
    :覆盖JRE类路径
  • -l
    ,
    --limit <N>
    list
    /
    search
    的最大结果数(默认:50),
    get
    的最大成员数
  • --hide-inherited
    :仅显示类型自身声明的成员(
    get
    命令)
  • --group-inherited
    :按声明类型分组成员并显示章节标题(
    get
    命令)

External commands (query arbitrary Maven coordinates)

外部命令(查询任意Maven坐标)

Query any published artifact by explicit coordinate (
group:artifact:version
):
cellar get-external <coordinate> <fqn>       # single symbol
cellar list-external <coordinate> <package>  # list symbols
cellar search-external <coordinate> <query>  # search by name
cellar get-source <coordinate> <fqn>         # fetch source code
cellar deps <coordinate>                     # dependency tree
  • Coordinates must be explicit:
    group:artifact_3:version
    (no
    ::
    shorthand)
  • For sbt plugins, use the full Scala and sbt suffix:
    group:artifact_2.12_1.0:version
    (e.g.
    org.scala-native:sbt-scala-native_2.12_1.0:latest
    )
  • For compiler plugins and other artifacts with full Scala version suffixes, use the full version:
    group:artifact_3.3.8:version
  • Use
    latest
    as the version to resolve the most recent release
  • -r
    ,
    --repository <url>
    : extra Maven repository (repeatable)
通过明确的坐标(
group:artifact:version
)查询任何已发布的制品:
cellar get-external <coordinate> <fqn>       # 单个符号
cellar list-external <coordinate> <package>  # 列出符号
cellar search-external <coordinate> <query>  # 按名称搜索
cellar get-source <coordinate> <fqn>         # 获取源代码
cellar deps <coordinate>                     # 依赖树
  • 坐标必须明确:
    group:artifact_3:version
    (不支持
    ::
    简写)
  • 对于sbt插件,使用完整的Scala和sbt后缀:
    group:artifact_2.12_1.0:version
    (例如
    org.scala-native:sbt-scala-native_2.12_1.0:latest
  • 对于编译器插件和其他带有完整Scala版本后缀的制品,使用完整版本:
    group:artifact_3.3.8:version
  • 使用
    latest
    作为版本来解析最新发布的版本
  • -r
    ,
    --repository <url>
    :额外的Maven仓库(可重复使用)

Workflow

工作流程

  1. Don't know the package?
    cellar search
    /
    cellar search-external
  2. Know the package, not the type?
    cellar list
    /
    cellar list-external
  3. Know the type?
    cellar get
    /
    cellar get-external
  4. Need the implementation?
    cellar get-source
  1. 不知道包名?
    cellar search
    /
    cellar search-external
  2. 知道包名,但不知道类型?
    cellar list
    /
    cellar list-external
  3. 知道类型?
    cellar get
    /
    cellar get-external
  4. 需要实现代码?
    cellar get-source

Examples

示例

sh
undefined
sh
undefined

Look up a Scala 3 trait

查询Scala 3 trait

cellar get-external org.typelevel:cats-core_3:2.10.0 cats.Monad
cellar get-external org.typelevel:cats-core_3:2.10.0 cats.Monad

Look up a Java class

查询Java类

cellar get-external org.apache.commons:commons-lang3:3.14.0 org.apache.commons.lang3.StringUtils
cellar get-external org.apache.commons:commons-lang3:3.14.0 org.apache.commons.lang3.StringUtils

List a package

列出包内内容

cellar list-external io.circe:circe-core_3:0.14.6 io.circe
cellar list-external io.circe:circe-core_3:0.14.6 io.circe

Search for a method

搜索方法

cellar search-external org.typelevel:cats-core_3:2.10.0 flatMap
cellar search-external org.typelevel:cats-core_3:2.10.0 flatMap

Get source code

获取源代码

cellar get-source org.typelevel:cats-core_3:2.10.0 cats.Monad
cellar get-source org.typelevel:cats-core_3:2.10.0 cats.Monad

Dependency tree

依赖树

cellar deps org.typelevel:cats-effect_3:3.5.4
cellar deps org.typelevel:cats-effect_3:3.5.4

sbt plugin (use full Scala + sbt suffix)

sbt插件(使用完整的Scala + sbt后缀)

cellar deps org.scala-native:sbt-scala-native_2.12_1.0:latest
cellar deps org.scala-native:sbt-scala-native_2.12_1.0:latest

Project-aware (from a Mill project root)

项目感知命令(从Mill项目根目录运行)

cellar get --module lib cats.Monad cellar list --module core cats cellar search --module lib flatMap
undefined
cellar get --module lib cats.Monad cellar list --module core cats cellar search --module lib flatMap
undefined

Example output

示例输出

cellar get-external --hide-inherited org.typelevel:cats-core_3:2.10.0 cats.Monad
markdown
undefined
cellar get-external --hide-inherited org.typelevel:cats-core_3:2.10.0 cats.Monad
markdown
undefined

cats.Monad

cats.Monad

trait Monad[F] extends FlatMap[F] with Applicative[F]
Flags: abstract Origin: cats.Monad Members: def iterateWhile[A](f: F[A]): (p: A => Boolean): F[A] def untilM[G, A](f: F[A]): (cond: => F[Boolean]): (G: Alternative[G]): F[G[A]] def whileM_[A](p: F[Boolean]): (body: => F[A]): F[Unit] def iterateUntil[A](f: F[A]): (p: A => Boolean): F[A] … (+ 7 more) Companion members: trait Ops[F, A], def apply[F](instance: Monad[F]): Monad[F], …

Use `--hide-inherited` to get only own members. Without it, all inherited members are shown (can be large for deep hierarchies).
trait Monad[F] extends FlatMap[F] with Applicative[F]
Flags: abstract Origin: cats.Monad Members: def iterateWhile[A](f: F[A]): (p: A => Boolean): F[A] def untilM[G, A](f: F[A]): (cond: => F[Boolean]): (G: Alternative[G]): F[G[A]] def whileM_[A](p: F[Boolean]): (body: => F[A]): F[Unit] def iterateUntil[A](f: F[A]): (p: A => Boolean): F[A] … (+ 7 more) Companion members: trait Ops[F, A], def apply[F](instance: Monad[F]): Monad[F], …

使用`--hide-inherited`仅显示自身成员。如果不使用该参数,会显示所有继承的成员(对于深层继承结构,结果可能会很大)。

When Metals MCP is also available

当Metals MCP也可用时

Prefer cellar only for external dependency API lookups (
cellar get-external
vs Metals
inspect
/
get-docs
): cellar requires no project import and works with any published Maven coordinate. For all other tasks — goto definition, find references, rename, diagnostics, compilation — use Metals.
仅在查询外部依赖API时优先使用cellar(
cellar get-external
对比 Metals
inspect
/
get-docs
):cellar无需导入项目,可与任何已发布的Maven坐标配合使用。对于所有其他任务——跳转定义、查找引用、重命名、诊断、编译——请使用Metals。

Output

输出

  • stdout: Markdown — ready to consume directly
  • stderr: diagnostics (warnings, truncation notices)
  • Exit 0: success, Exit 1: error
  • 标准输出(stdout):Markdown格式——可直接使用
  • 标准错误(stderr):诊断信息(警告、截断通知)
  • 退出码0:成功,退出码1:错误