Skip to content

consider designing clear capability interfaces #437

@cvogt

Description

@cvogt

Think about what builds and dependencies can do as capabilities and design clear, stable interfaces for them.

E.g. something like

interface Jvm{
  public JvmConfig jvm();
  public ClassPath classPath();
}
interface JvmConfig{
  public String version();
}

If we put those into the compatibility layer (postfixing the name with a version should we ever need revisions), then we can use them to match Dependency objects against and interact with them in a type-safe way in general and especially across builds.

Then people can query the dependency graph for only those that have certain capabilities.

On the other hand maybe we should not have ONE dependency graph but several use case specific and more narrowly typed ones. Anyways, let's look into this more.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions