diff --git a/README.md b/README.md
index b4c354872272..54de07e2302b 100644
--- a/README.md
+++ b/README.md
@@ -27,8 +27,8 @@ geospatial analytics.
* [Main documentation](https://www.geomesa.org/documentation/)
* [Upgrade Guide](https://www.geomesa.org/documentation/user/upgrade.html)
* Quick Starts:
- [HBase](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html) |
[Accumulo](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-accumulo.html) |
+ [HBase](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html) |
[Cassandra](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-cassandra.html) |
[Kafka](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-kafka.html) |
[Redis](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-redis.html) |
@@ -40,8 +40,8 @@ geospatial analytics.
**Current release: [5.1.0](https://github.com/locationtech/geomesa/releases/tag/geomesa-5.1.0)**
- [**HBase**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-hbase_2.12-5.1.0-bin.tar.gz) |
[**Accumulo**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-accumulo_2.12-5.1.0-bin.tar.gz) |
+ [**HBase**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-hbase_2.12-5.1.0-bin.tar.gz) |
[**Cassandra**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-cassandra_2.12-5.1.0-bin.tar.gz) |
[**Kafka**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-kafka_2.12-5.1.0-bin.tar.gz) |
[**Redis**](https://github.com/locationtech/geomesa/releases/download/geomesa-5.1.0/geomesa-redis_2.12-5.1.0-bin.tar.gz) |
@@ -79,11 +79,27 @@ GeoMesa is hosted on Maven Central. To include it as a dependency, add the desir
```xml
org.locationtech.geomesa
- geomesa-hbase-datastore_2.12
+ geomesa-accumulo-datastore_2.12
5.1.0
```
+GeoMesa provides a bill-of-materials module, which can simplify version management:
+
+```xml
+
+
+
+ org.locationtech.geomesa
+ geomesa-bom_2.12
+ 5.1.0
+ pom
+ import
+
+
+
+```
+
GeoMesa depends on several third-party libraries that are only available in separate repositories. To include
GeoMesa in your project, add the following repositories to your pom:
diff --git a/build/templates/README.md b/build/templates/README.md
index 530c6171b2c3..ac1244bdf07b 100644
--- a/build/templates/README.md
+++ b/build/templates/README.md
@@ -27,8 +27,8 @@ geospatial analytics.
* [Main documentation](https://www.geomesa.org/documentation/)
* [Upgrade Guide](https://www.geomesa.org/documentation/user/upgrade.html)
* Quick Starts:
- [HBase](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html) |
[Accumulo](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-accumulo.html) |
+ [HBase](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-hbase.html) |
[Cassandra](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-cassandra.html) |
[Kafka](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-kafka.html) |
[Redis](https://www.geomesa.org/documentation/tutorials/geomesa-quickstart-redis.html) |
@@ -40,8 +40,8 @@ geospatial analytics.
**Current release: [${geomesa.release.version}](https://github.com/locationtech/geomesa/releases/tag/geomesa-${geomesa.release.version})**
- [**HBase**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-hbase_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
[**Accumulo**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-accumulo_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
+ [**HBase**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-hbase_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
[**Cassandra**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-cassandra_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
[**Kafka**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-kafka_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
[**Redis**](https://github.com/locationtech/geomesa/releases/download/geomesa-${geomesa.release.version}/geomesa-redis_${scala.binary.version}-${geomesa.release.version}-bin.tar.gz) |
@@ -79,11 +79,27 @@ GeoMesa is hosted on Maven Central. To include it as a dependency, add the desir
```xml
org.locationtech.geomesa
- geomesa-hbase-datastore_${scala.binary.version}
+ geomesa-accumulo-datastore_${scala.binary.version}
${geomesa.release.version}
```
+GeoMesa provides a bill-of-materials module, which can simplify version management:
+
+```xml
+
+
+
+ org.locationtech.geomesa
+ geomesa-bom_${scala.binary.version}
+ ${geomesa.release.version}
+ pom
+ import
+
+
+
+```
+
GeoMesa depends on several third-party libraries that are only available in separate repositories. To include
GeoMesa in your project, add the following repositories to your pom:
diff --git a/docs/user/download.rst b/docs/user/download.rst
index 23a79b1c1acb..f480fbbe54b2 100644
--- a/docs/user/download.rst
+++ b/docs/user/download.rst
@@ -41,7 +41,7 @@ repositories to your pom:
-and then include the desired ``geomesa-*`` dependencies:
+and then include the desired GeoMesa dependencies:
.. parsed-literal::
@@ -58,6 +58,22 @@ and then include the desired ``geomesa-*`` dependencies:
${geomesa.version}
+GeoMesa provides a bill-of-materials module, which can simplify version management:
+
+.. code-block:: xml
+
+
+
+
+ org.locationtech.geomesa
+ geomesa-bom_${scala.binary.version}
+ ${geomesa.version}
+ pom
+ import
+
+
+
+
For cutting-edge development, nightly snapshots are available from Eclipse:
.. code-block:: xml
diff --git a/docs/user/index.rst b/docs/user/index.rst
index 30075da3a459..61d5c49fe3d8 100644
--- a/docs/user/index.rst
+++ b/docs/user/index.rst
@@ -19,13 +19,13 @@ User Manual
spark/index
nifi/index
process
- hbase/index
accumulo/index
+ hbase/index
cassandra/index
+ postgis/index
kafka/index
redis/index
filesystem/index
- postgis/index
lambda/index
ds_views
upgrade
diff --git a/docs/user/install.rst b/docs/user/install.rst
index 1c6421dfe6e5..44316c0c044f 100644
--- a/docs/user/install.rst
+++ b/docs/user/install.rst
@@ -5,8 +5,8 @@ Installation
Installation instructions are available for each data store implementation:
-* :doc:`/user/hbase/install`
* :doc:`/user/accumulo/install`
+* :doc:`/user/hbase/install`
* :doc:`/user/cassandra/install`
* :doc:`/user/kafka/install`
* :doc:`/user/redis/install`
diff --git a/geomesa-utils-parent/geomesa-bom/generate-pom.sh b/geomesa-utils-parent/geomesa-bom/generate-pom.sh
new file mode 100755
index 000000000000..747f6bf106af
--- /dev/null
+++ b/geomesa-utils-parent/geomesa-bom/generate-pom.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+set -e
+set -u
+set -o pipefail
+
+cd "$(dirname "$0")/../.." || exit
+
+export LC_ALL=C # ensure stable sort order across different locales
+POM="geomesa-utils-parent/geomesa-bom/pom.xml"
+
+echo "Running maven build to generate installed artifact list"
+deps=()
+# mapfile reads the results into an array
+# we get the list of artifacts from `mvn clean install` (seems to be only way...)
+mapfile -t deps < <(
+ mvn clean install -DskipTests -Pzinc -B -T2C 2>&1 |
+ grep Installing | # pull out installed artifacts only
+ grep -v -e "\-sources\.jar$" -e "\.pom$" | # skip sources jars and poms
+ sed 's|.*\.m2/repository/org/locationtech/geomesa/||' | # strip line prefix
+ sed 's|\.|!|g' | # replace . with ! so that classifiers sort after regular artifact
+ sort | # sort artifacts
+ sed 's|!|.|g' # undo classifier sort hack
+)
+
+# truncate everything after the opening dependencyManagement
+sed -i '/ /q' "$POM"
+echo -e " \n" >> "$POM"
+
+function printDependency() {
+ local dep="$1"
+ # elements look like 'geomesa-utils_2.12/4.0.0-SNAPSHOT/geomesa-utils_2.12-4.0.0-SNAPSHOT.jar'
+ artifact="$(echo "$dep" | awk -F '/' '{ print $1 }')"
+ version="$(echo "$dep" | awk -F '/' '{ print $2 }')"
+ classifier=""
+ if ! [[ $dep =~ .*$artifact-$version.jar ]]; then
+ classifier=$'\n'" $(echo "$dep" | sed -E 's/.*-([a-z]+)\.jar/\1/')"
+ if [[ $classifier =~ test ]]; then
+ classifier="$classifier"$'\n'" test"
+ fi
+ fi
+ {
+ echo " "
+ echo " org.locationtech.geomesa"
+ echo " ${artifact%_*}_\${scala.binary.version}"
+ echo " \${geomesa.version}$classifier"
+ echo " "
+ } | tee -a "$POM"
+}
+
+for dep in "${deps[@]}"; do
+ if ! [[ $dep =~ .*tests.jar ]]; then
+ printDependency "$dep"
+ fi
+done
+
+echo -e "\n \n" | tee -a "$POM"
+
+for dep in "${deps[@]}"; do
+ if [[ $dep =~ .*tests.jar ]]; then
+ printDependency "$dep"
+ fi
+done
+
+echo "
+
+
+" >> "$POM"
diff --git a/geomesa-utils-parent/geomesa-bom/pom.xml b/geomesa-utils-parent/geomesa-bom/pom.xml
new file mode 100644
index 000000000000..ecadc28e2695
--- /dev/null
+++ b/geomesa-utils-parent/geomesa-bom/pom.xml
@@ -0,0 +1,509 @@
+
+
+
+
+ geomesa-utils-parent_2.12
+ org.locationtech.geomesa
+ 5.2.0-SNAPSHOT
+
+ 4.0.0
+
+ geomesa-bom_2.12
+ GeoMesa Bill Of Materials
+ pom
+
+
+
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-distributed-runtime_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-indices_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-iterators_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-jobs_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-spark-runtime-accumulo20_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-spark-runtime-accumulo21_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-spark_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-arrow-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-arrow-gt_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-arrow-jts_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-arrow-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-cassandra-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-cassandra-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-all_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-avro-schema-registry_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-avro_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-common_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-fixedwidth_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-jdbc_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-json_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-parquet_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-redis-cache_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-shp_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-simplefeature_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-text_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-convert-xml_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-cqengine-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-cqengine_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-feature-all_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-feature-avro_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-feature-common_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-feature-exporters_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-feature-kryo_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-filter_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-spark-runtime_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-spark_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-storage-api_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-storage-common_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-storage-convert_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-storage-orc_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-storage-parquet_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-fs-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-gt-partitioning_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-gt-spark-runtime_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-gt-spark_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-gt-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hadoop-utils_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-distributed-runtime-hbase2_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-jobs_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-rpc_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-server-hbase2_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-server_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-spark-runtime-hbase2_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-spark_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-index-api_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-jobs_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-kafka-confluent_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-kafka-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-kafka-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-kafka-utils_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-lambda-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-lambda-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-metrics-cloudwatch_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-metrics-core_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-metrics-graphite_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-metrics-micrometer_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-metrics-prometheus_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-process-vector_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-process-wps_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-redis-datastore_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-redis-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-security_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-spark-converter_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-spark-core_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-spark-jts_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-spark-jupyter-leaflet_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-spark-sql_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-tools_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-tools_${scala.binary.version}
+ ${geomesa.version}
+ data
+
+
+ org.locationtech.geomesa
+ geomesa-utils_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-z3_${scala.binary.version}
+ ${geomesa.version}
+
+
+ org.locationtech.geomesa
+ geomesa-zk-utils_${scala.binary.version}
+ ${geomesa.version}
+
+
+
+
+
+ org.locationtech.geomesa
+ geomesa-accumulo-datastore_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-fs-datastore_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-hbase-datastore_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-index-api_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-kafka-datastore_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-spark-jts_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+ org.locationtech.geomesa
+ geomesa-spark-sql_${scala.binary.version}
+ ${geomesa.version}
+ tests
+ test
+
+
+
+
+
diff --git a/geomesa-utils-parent/pom.xml b/geomesa-utils-parent/pom.xml
index b1780cce0a8f..c5d4bd4f5a59 100644
--- a/geomesa-utils-parent/pom.xml
+++ b/geomesa-utils-parent/pom.xml
@@ -12,6 +12,7 @@
pom
+ geomesa-bom
geomesa-hadoop-utils
geomesa-utils
geomesa-zk-utils