diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6fb8cb1a..785a8324 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,6 +26,7 @@ Verify a single file from the CLI: ./liquidjava path/to/File.java ``` +The launcher recompiles `liquidjava-api` and `liquidjava-verifier` only when local sources or Maven files have changed. Code formatting runs automatically via `formatter-maven-plugin` during the `validate` phase. ## Release diff --git a/README.md b/README.md index fab87e1d..b4d61965 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,7 @@ mvn exec:java -pl liquidjava-verifier -Dexec.mainClass="liquidjava.api.CommandLi ``` If you're on Linux/macOS, you can use the `liquidjava` script (from the repository root) to simplify the process. +The script recompiles the verifier only when local sources or Maven files have changed. **Test a correct case**: ```bash diff --git a/liquidjava b/liquidjava index 003237fc..e71783ce 100755 --- a/liquidjava +++ b/liquidjava @@ -1,4 +1,20 @@ #!/bin/bash +set -e + +cd "$(dirname "$0")" + +MARKER="liquidjava-verifier/target/.liquidjava-last-compile" + +if [ ! -d liquidjava-api/target/classes ] || \ + [ ! -d liquidjava-verifier/target/classes ] || \ + [ ! -f "$MARKER" ] || \ + find pom.xml liquidjava-api/pom.xml liquidjava-api/src/main/java \ + liquidjava-verifier/pom.xml liquidjava-verifier/src/main/java liquidjava-verifier/src/main/antlr4 \ + -newer "$MARKER" -print -quit | grep -q .; then + mvn compile -pl liquidjava-verifier -am -Dmaven.compiler.useIncrementalCompilation=false + touch "$MARKER" +fi + mvn exec:java -pl liquidjava-verifier \ -Dexec.mainClass="liquidjava.api.CommandLineLauncher" \ -Dexec.args="$*" \ No newline at end of file