Def classes are the compilation result of Java/Kotlin source files located in jeka/def. They can be declared at root or in sub-folders for packages. 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 having a name starting by
_are skipped from compilation.
Java source files definded in def dir are compiled using the running JDK.
Kotlin sources are compiled using Kotlin version specified by
jeka.kotlin.version property if present or
using Kotlin compiler 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 command line and annotations
- compiled def classes
- Jeka classpaths coming from imported projects
It's possible to inject transitively dependencies into classpath by either annotating def classes or by mentionning it in command line.
By default, jeka fetch 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/options.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 it can be
used inside your def classes.
jeka intellij#iml or
Dependencies imported via
@JkInjectClasspath are imported for all def classes and not only for annotated class.
Inject from Command Line¶
Specify path or module coordinates in the command line using '@' as
This feature is meant to invoke KBeans dynamically.
Jeka supports multi-module projects in Jeka classpath of a given project can include Jeka classpath of another one.