This repository demonstrates how to use Kotlin with Pants. (Pants also supports Java and Scala, which
are demonstrared in the example-jvm
repository.)
There are two examples:
- Kotlin calling into Java plus a JUnit test
- Serializing/deserializing JSON using the Kotlin serialization compiler plugin
This is only one possible way of laying out your project with Pants. See pantsbuild.org/docs/source-roots#examples for some other example layouts.
You run Pants goals using the ./pants
wrapper script, which will bootstrap the
configured version of Pants if necessary.
Pants commands are called goals. You can get a list of goals with
./pants help goals
Most goals take arguments to run on. To run on a single directory, just use the directory name.
To recursively run on a directory and all its subdirectories, add ::
to the end.
For example:
./pants lint src: 3rdparty::
You can run on all changed files:
./pants --changed-since=HEAD lint
You can run on all changed files, and any of their "dependees":
./pants --changed-since=HEAD --changed-dependees=transitive test
Try these out in this repo!
./pants fmt :: # Format all files.
./pants fmt src/jvm # Format only files in this directory (non-recursively).
./pants lint src/jvm:: # Check that all files under `src/jvm` are formatted (recursively).
./pants check :: # Compile everything.
./pants check src/jvm/org/pantsbuild/example/json/JsonExample.kt # Compile a file and its deps.
Writes the result to the dist/
folder.
./pants package src/jvm/org/pantsbuild/example/json # Build binaries in this directory.
./pants package :: # Create all binaries.
./pants dependencies src/jvm::
./pants dependencies --transitive src/jvm::
That is, find what code depends on a particular files.
./pants dependees src/jvm/org/pantsbuild/example/json::
./pants dependees --transitive src/jvm/org/pantsbuild/example/json/JsonExample.kt
./pants count-loc ::