mirror of
https://github.com/apache/maven-mvnd.git
synced 2025-09-10 01:19:11 +00:00
89 lines
2.9 KiB
Plaintext
89 lines
2.9 KiB
Plaintext
= mvnd: Maven Daemon
|
|
|
|
The mvnd project aims to provide a daemon infrastructure for maven based builds. It borrows techniques from Gradle and Takari to provide a simple and efficient system.
|
|
|
|
== Install `mvnd`
|
|
|
|
* Download the latest ZIP suitable for your platform from https://github.com/mvndaemon/mvnd/releases
|
|
* Unzip to a directory of your choice
|
|
* Add the `bin` directory to `PATH`
|
|
* Optionally, you can create `~/.m2/mvnd.properties` and set the `java.home` property in case you do not want to bother
|
|
with setting `JAVA_HOME` environment variable.
|
|
* Test whether `mvnd` works:
|
|
+
|
|
[source,shell]
|
|
----
|
|
$ mvnd --version
|
|
Maven Daemon 0.0.0 (native)
|
|
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
|
|
Maven home: /home/ppalaga/orgs/mvnd/mvnd/daemon/target/maven-distro
|
|
Java version: 11.0.1, vendor: AdoptOpenJDK, runtime: /home/data/jvm/adopt-openjdk/jdk-11.0.1+13
|
|
Default locale: en_IE, platform encoding: UTF-8
|
|
OS name: "linux", version: "5.6.13-200.fc31.x86_64", arch: "amd64", family: "unix"
|
|
----
|
|
+
|
|
If you are on Windows and see a message that `VCRUNTIME140.dll was not found`, you need to install
|
|
`vc_redist.x64.exe` from https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads.
|
|
See https://github.com/oracle/graal/issues/1762 for more information.
|
|
|
|
|
|
== Usage
|
|
|
|
`mvnd` is designed to accept the same command line options like stock `mvn` (plus some extras - see below), e.g.:
|
|
|
|
[source,shell]
|
|
----
|
|
mvnd clean install
|
|
----
|
|
|
|
== `mvnd` specific options
|
|
|
|
`--status` lists running daemons
|
|
|
|
`--stop` kills all running daemons
|
|
|
|
== Build `mvnd` from source
|
|
|
|
=== Prerequisites:
|
|
|
|
* `git`
|
|
* Maven
|
|
* Download and unpack GraalVM CE from https://github.com/graalvm/graalvm-ce-builds/releases[GitHub]
|
|
* Set `JAVA_HOME` to where you unpacked GraalVM in the previous step. Check that `java -version` output is as
|
|
expected:
|
|
+
|
|
[source,shell]
|
|
----
|
|
$ $JAVA_HOME/bin/java -version
|
|
openjdk version "11.0.7" 2020-04-14
|
|
OpenJDK Runtime Environment GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02)
|
|
OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing)
|
|
----
|
|
+
|
|
* Install the `native-image` tool:
|
|
+
|
|
[source,shell]
|
|
----
|
|
$ $JAVA_HOME/bin/gu install native-image
|
|
----
|
|
|
|
* `native-image` may require additional software to be installed depending on your platform - see the
|
|
https://www.graalvm.org/docs/reference-manual/native-image/#prerequisites[`native-image` documentation].
|
|
|
|
=== Build `mvnd`
|
|
|
|
[source,shell]
|
|
----
|
|
$ git clone https://github.com/mvndaemon/mvnd.git
|
|
$ cd mvnd
|
|
$ mvn clean verify -Pnative
|
|
...
|
|
$ cd client
|
|
$ file target/mvnd
|
|
target/mvnd: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=93a554f3807550a13c986d2af9a311ef299bdc5a, for GNU/Linux 3.2.0, with debug_info, not stripped
|
|
$ ls -lh target/mvnd
|
|
-rwxrwxr-x. 1 ppalaga ppalaga 25M Jun 2 13:23 target/mvnd
|
|
----
|
|
|
|
This project is still in prototype mode, so feedback is most welcomed!
|