Jeka(formerly Jerkar) is a complete Java build system ala Ant, Maven, Gradle or Buildr using only Java code to automate builds or tasks.
Forget about verbose Poms and rigid Maven structure. Get rid of Gradle scripting/DSL.
Enjoy all the engineering power you are comfortable with : Java code, IDE, 3rd party libs, binary repositories, ....
Model, refactor, run, debug, reuse automation assets across tasks and projects. Exactly as you do with your regular Java code.
Also, Jeka conventions and plugin mechanism are so powerful that it can perform pretty exotic tasks without needing a single line of code/configuration.
For example jeka java#pack jacoco# sonar#run -sonar#host.url=http://myserver/sonar
performs a complete build running unit tests under Jacoco coverage tools and performs SonarQube analysis on a Java project free
of any build-code / configuration / script.
Jeka 0.9.0.M1 is out. Until Jeka reaches version 1.0.0, minor version change (the digit in the middle) will imply API change. Normally, this is not a problem as wrapper usage protects users against API change. 0.9 introduces a cleaner API for defining project build. This is based on parent chainin pattern.
Jeka has joined OW2 organisation on january 2020 : https://projects.ow2.org/view/jeka/
Last major additions :
Please visit release note and issues for roadmap.
The distribution is the file named jeka-core-x.x.x-distrib.zip.
Jeka is designed to be easy to master for Java developers. It is easy to figure out how it works by knowing few concepts and navigate in source code.
That said, documentation is needed for a starting point.
Visit following pages according your expectation :
Jeka comes with plugins out of the box. These plugins covers the most common points a Java developer need to address when building a project. This includes plugins for IDE metadata generation (IntelliJ, Eclipse), dependency management, git, , java project building, testing, PGP signing, binary repositories, Maven interaction, scaffolding, sonarQube and web archives.
Nevertheless, Jeka is extensible and other plugins exist outside the main distib among :
This project is supported by OW2 consortium.
You can ask question using regular using this repository issues.
You can also use direct emailing for questions and support : [email protected]
A twitter account also exist : https://twitter.com/djeang_dev
Jeka is made of following projects :
Jeka builds itself. To build Jeka full distrib from sources, the simpler is to use your IDE.
Once distrib created, add the distrib folder to your PATH environment variable.
JEKA_USER_HOME
classpath variable pointing on [USER_HOME]/.jeka dev.jeka.core.CoreBuildAndIT
class main method. This class is located in jeka/def folder. Note that it exists a now an IntelliJ plugin to integrate Jeka to get rid of the following setup.
JEKA_USER_HOME
variable pointing on [USER_HOME]/.jeka dev.jeka.core.CoreBuildAndIT
class main method. This class is located in jeka/def folder, inside dev.jeka.core module.
Make sure to run it using $MODULE_WORKING_DIR$
as working directory.To build the project without running whole integration test suite, run dev.jeka.core.CoreBuild
class main method.
Release is done automatically by Travis at each git push. If there is no tag on the current commit then it goes to a SNAPSHOT deploy on OSSRH. If there is a tag, it goes to a publish on Maven central.
To really deploy to Maven central, a manual action it still needed to close/release repository.
To create a tag conveniently, just execute jeka git#tagRemote
from your console and answer to the prompt.