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
Fast-forward to install-jdk.sh section.
This section will help you get started with Bach.jsh
used as a remote load-file
of jshell.
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
Open a command shell and change into the directory containing your modular Java project.
<path/> jshell https://bit.ly/bach-jsh
That's all you need to build a modular Java project.
Note: the shortened
https://bit.ly/bach-jsh
expands to https://raw.githubusercontent.com/sormuras/bach/master/src/bach/Bach.jsh
For immediate results, such as fail-fast on errors, use:
jshell --execution=local https://bit.ly/bach-jsh
For more information what Bach.java is doing at runtime, use:
jshell --execution=local -J-Debug=true https://bit.ly/bach-jsh
For more details consult the output of jshell --help
.
This section will help you get started with Bach.java
used as single file source code Java program.
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
Create an empty directory and change into it.
On Windows, you may open a command prompt and enter mkdir demo & cd demo
.
On Linux and Mac OS, it could read mkdir demo && cd demo
.
<path/demo/> | // blinking cursor
Either download a copy of Bach.java from GitHub manually or let jshell do it for you:
<path/demo/> jshell https://bit.ly/boot-bach
Note: the shortened
https://bit.ly/boot-bach
expands to https://raw.githubusercontent.com/sormuras/bach/master/boot.jsh
<path/demo/>
.
├── bach // Linux/Mac OS launch script |
├── bach.bat // Windows batch file | Just convenient short-cuts for:
└── .bach // \__ java .bach/master/Bach.java
└── master //
└── Bach.java // Java Shell Builder
Remember to prepend ./
before each bach
command when running on Linux or Mac OS.
<path/demo/> bach scaffold
<path/demo/> bach build
<path/demo/> bach launch
java Bach.java help
prints
Usage of Bach.java (master): java Bach.java [<action>...]
Available default actions are:
build Build modular Java project in base directory.
clean Delete all generated assets - but keep caches intact.
erase Delete all generated assets - and also delete caches.
help Print this help screen on standard out... F1, F1, F1!
launch Start project's main program.
tool Run named tool consuming all remaining arguments:
tool <name> <args...>
tool java --show-version Program.java
scaffold Create modular Java sample project in base directory.
Project with one more more modules.
demo
+ src
+ com.greetings
+ org.astro
+ ...
Project with one more more modules and test modules.
demo
+ src
+ com.greetings
+ org.astro
+ ...
+ test
+ com.greetings
+ org.astro
+ ...
+ integration
+ ...
install-jdk.sh
main purpose is to install the latest-and-greatest available OpenJDK release from jdk.java.net.
It supports GA releases and builds provided by Oracle as well.
-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|10|...|ea JDK feature release number, defaults to "ea"
-l|--license GPL|BCL License defaults to "GPL"
-o|--os linux-x64|osx-x64 Operating system identifier (works best with GPL license)
-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 component of the tarball
-c|--cacerts Link system CA certificates (currently only Debian/Ubuntu is supported)
-
Source
install-jdk.sh
into current shell to install latest OpenJDK and let it updateJAVA_HOME
andPATH
environment variables:source ./install-jdk.sh
Caveat: if an error happens during script execution the calling shell will terminate
-
Provide target directory path to use as
JAVA_HOME
:JAVA_HOME=~/jdk && ./install-jdk.sh --target $JAVA_HOME && PATH=$JAVA_HOME/bin:$PATH
-
Run
install-jdk.sh
in a sub-shell to install latest OpenJDK and emit the installation path tostdout
:JAVA_HOME=$(./install-jdk.sh --silent --emit-java-home)
JAVA_HOME=$(./install-jdk.sh --emit-java-home | tail --lines 1)