Def classes are the compilation results of Java/Kotlin source files located in jeka/def. The execution engine compiles these files on the fly prior adding them to the Jeka classpath.
It is possible to specify compilation options by annotating a def class as :
- jeka/def can also contain classpath resources.
- Classes with names starting with
_are skipped from compilation.
Java source files definded in def dir are compiled using the running JDK.
Kotlin sources are compiled using Kotlin versions specified by
jeka.kotlin.version property if present or
using Kotlin compilers specified by KOTLIN_HOME environment variable.
Under the hood, Jeka simply executes Java byte code within a flat classloader. This classloader classpath is constructed from :
- jar files present in jeka/boot dir
- dependencies injected via the command line and annotations
- compiled def classes
- Jeka classpaths from imported projects
It's possible to transitively inject dependencies into classpaths by either annotating def classes or by mentionning it in command line.
By default, jeka fetches dependencies from maven central (https://repo.maven.apache.org/maven2).
You can select another default repository by setting the
We recommend storing this value in your [USER DIR]/.jeka/global.properties file to be reused across projects.
For more details, see
Inject from Def Classes¶
Annotate a def class with
@JkInjectClasspath mentioning either a module coordinate or a path on the local file system.
Update your IDE dependencies right after adding this annotation in order for it to be
used inside your def classes.
jeka intellij#iml or
Dependencies imported via
@JkInjectClasspath are imported for all def classes and not only for the annotated class.
Inject from Command Line¶
Specify path or module coordinates in the command line using '@' as
This feature is meant to dynamically invoke KBeans.
Jeka supports multi-module projects. Jeka classpath of a given project can include Jeka classpath of another one.