Building Edgent from a Source Distribution

Apache Edgent is supported on several Java target platforms.
For more information see JAVA_SUPPORT.md in the source tree
or in the ASF git repository https://git-wip-us.apache.org/repos/asf/incubator-edgent.git
or in the repository mirror at github https://github.com/apache/incubator-edgent.

Pre-requisites:
- Java 8 is required to build an Edgent binary distribution
- gradle (https://gradle.org/) only if building from a source release bundle

Building from a source release bundle (lacking a ./gradlew) requires
performing a one-time bootstrap step using an installed version of gradle:

$ gradle          # one time gradle build bootstrap setup.

Build an Edgent binary distribution:

$ ./gradlew release   # .\gradlew.bat on Windows

The build reports the location of the binary distribution bundle that can then
be unpacked and used in building applications.

See Getting Started https://edgent.apache.org/docs/edgent-getting-started

For more information about the Edgent sources, testing, and
contributing to Edgent runtime development see DEVELOPMENT.md in the source tree
or in the ASF git repository https://git-wip-us.apache.org/repos/asf/incubator-edgent.git
or in the repository mirror at github https://github.com/apache/incubator-edgent.

Apache Edgent is released under the Apache License Version 2.0.

Apache Edgent is an effort undergoing incubation at The Apache Software Foundation (ASF),
sponsored by the Incubator PMC. Incubation is required of all newly accepted
projects until a further review indicates that the infrastructure, communications,
and decision making process have stabilized in a manner consistent with other
successful ASF projects. While incubation status is not necessarily a reflection
of the completeness or stability of the code, it does indicate that the project
has yet to be fully endorsed by the ASF.
