bach

Bach.java - Java Shell Builder

jdk11 experimental github actions central

Use Java source (in jshell) to build your modular Java project.

    ___      ___      ___      ___
   /\  \    /\  \    /\  \    /\__\
  /  \  \  /  \  \  /  \  \  / /__/_
 /  \ \__\/  \ \__\/ /\ \__\/  \/\__\
 \ \  /  /\/\  /  /\ \ \/__/\/\  /  /
  \  /  /   / /  /  \ \__\    / /  /
   \/__/    \/__/    \/__/    \/__/.java

No need to be a maven to be able to use a build tool - forax/pro

:scroll:Fast-forward to install-jdk.sh section.

Execute Bach.java on-the-fly

This section will help you get started with Bach.jsh used as a remote load-file of jshell.

0. Install JDK 11 or later

Make sure you have JDK 11 or later installed and configured. jshell should be executable from any directory and print its version via:

<path/> jshell --version
jshell 11.0.2
1. Source Bach.jsh into JShell

Open a command shell and change into the directory containing your modular Java project.

<path/> jshell https://bit.ly/bach-jsh

:sparkles: That’s all you need to build a modular Java project. :sparkles:

Note: the shortened https://bit.ly/bach-jsh expands to https://raw.githubusercontent.com/sormuras/bach/master/src/bach/Bach.jsh

For more information what Bach.java is doing at runtime, use:

jshell -R-Debug https://bit.ly/bach-jsh

For more details consult the output of jshell --help.

Directory Layout

The following layout of directories is supported by Bach.java out-of-the-box:

foo/                    .___
  lib/              .---| bin/
  src/             /    | *.jar
  .gitignore  <---°

Expanding the first level directories reveals:

foo/
  lib/                            ,___
    module-version.properties <---| org.junit.jupiter.* = 5.5.2
    org.junit.jupiter-5.5.2.jar   | org.junit.platform.* = 1.5.2
    [...]                         | org.slf4j.* = 2.0.0-alpha.jar
    org.slf4j-2.0.0-alpha.jar
  src/
    org.foo/     <----------------| root directory of module "org.foo"
    org.foo.bar/ <----------------| root directory of module "org.foo.bar"
  .gitignore

install-jdk.sh

install-jdk.sh main purpose is to install the latest-and-greatest available OpenJDK release from jdk.java.net. Find a Travis CI matrix configuration at sormuras.github.io/.travis.yml.

Options of install-jdk.sh

-h|--help                 Displays this help
-d|--dry-run              Activates dry-run mode
-s|--silent               Displays no output
-e|--emit-java-home       Print value of "JAVA_HOME" to stdout (ignores silent mode)
-v|--verbose              Displays verbose output

-f|--feature 9|11|...|ea  JDK feature release number, defaults to "ea"
-o|--os linux-x64|osx-x64 Operating system identifier
-u|--url "https://..."    Use custom JDK archive (provided as .tar.gz file)
-w|--workspace PATH       Working directory defaults to user's ${HOME}
-t|--target PATH          Target directory, defaults to first real component of the tarball
-c|--cacerts              Link system CA certificates (currently only Debian/Ubuntu is supported)

How to set JAVA_HOME with install-jdk.sh

be free - have fun

jsb