Jerkar

Build simpler, stronger, faster

License

License

GroupId

GroupId

org.jerkar
ArtifactId

ArtifactId

core
Last Version

Last Version

0.7.0.RELEASE
Release Date

Release Date

Type

Type

jar
Description

Description

Jerkar
Build simpler, stronger, faster
Source Code Management

Source Code Management

https://github.com/jerkar/jerkar.git

Download core

How to add to project

<!-- https://jarcasting.com/artifacts/org.jerkar/core/ -->
<dependency>
    <groupId>org.jerkar</groupId>
    <artifactId>core</artifactId>
    <version>0.7.0.RELEASE</version>
</dependency>
// https://jarcasting.com/artifacts/org.jerkar/core/
implementation 'org.jerkar:core:0.7.0.RELEASE'
// https://jarcasting.com/artifacts/org.jerkar/core/
implementation ("org.jerkar:core:0.7.0.RELEASE")
'org.jerkar:core:jar:0.7.0.RELEASE'
<dependency org="org.jerkar" name="core" rev="0.7.0.RELEASE">
  <artifact name="core" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.jerkar', module='core', version='0.7.0.RELEASE')
)
libraryDependencies += "org.jerkar" % "core" % "0.7.0.RELEASE"
[org.jerkar/core "0.7.0.RELEASE"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

Build Status Maven Central Gitter
Twitter Follow

                                             

What is Jeka ?

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.

News

  • 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 :

  • Completely renewed API, now embracing widely Parent Chaining.
  • Test engine now relies on Junit 5 (still compatible with Junit 3&4)
  • Release of a plugin for Intellij
  • Upgraded to Ivy 2.5.0
  • Wrapper to run Jeka independently of the Jeka version installed on the host machine
  • Jdk9+ compatibility
  • Deploying on Maven central though a modern release process (version numbering based on Git instead of being hardcoded). Jeka now uses these features to release itself.

Roadmap/Ideas

  • Stabilise api from user feedback. API is quite workable now but may be improved.
  • Provides a graphical plugin for better integration with Eclipse
  • Enhance existing graphical plugin for Intellij
  • Provide a plugin for Android
  • Integrate Kotlin as a first citizen language for both building Kotlin projects and write Jeka command classes.

Please visit release note and issues for roadmap.

Get Jeka

The distribution is the file named jeka-core-x.x.x-distrib.zip.

How to use Jeka ?

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 :

External plugins

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 :

Community

Image

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

How to build Jeka ?

Jeka is made of following projects :

  • dev.jeka.core : complete Jeka project
  • dev.jeka.samples : A sample project with several build classes to illustrate how Jeka can be used in different ways
  • dev.jeka.depender-samples : A sample project depending on the above sample project to illustrate multi-project builds. These sample projects are also used to run some black-box tests

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.

Build Jeka from Eclipse

  • Clone this repository in Eclipse. Project is already configured ( .project and .classpath are stored in git).
  • Add the JEKA_USER_HOME classpath variable pointing on [USER_HOME]/.jeka
  • Make sure the project is configured to compile using a JDK8 or higher and not a JRE.
  • Run dev.jeka.core.CoreBuildAndIT class main method. This class is located in jeka/def folder.
  • This creates the full distrib in dev.jeka.core/jeka/output/distrib folder and run full Integration test suite.

Build Jeka from IntelliJ

Note that it exists a now an IntelliJ plugin to integrate Jeka to get rid of the following setup.

  • Clone this repository into IntelliJ. Project is already configured (.iml and modules.xml are stored in git).
  • Add the JEKA_USER_HOME variable pointing on [USER_HOME]/.jeka
  • Make sure the project is configured with a JDK8 or higher.
  • Run 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.
  • This creates the full distrib in dev.jeka.core/jeka/output/distrib folder and run full Integration test suite.

To build the project without running whole integration test suite, run dev.jeka.core.CoreBuild class main method.

How to Release ?

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.

                                             

org.jerkar

Jeka

Automate with plain Java code and nothing else.

Versions

Version
0.7.0.RELEASE
0.7.0.RC7
0.7.0.RC6
0.7.0.RC4
0.7.0.RC3
0.7.0.RC2
0.7.0.RC1
0.6.0
0.5.0
0.4.6
0.4.5
0.4.0
0.3.2
0.3.1
0.3.0
0.2.7