From ff83fb03f782b26085f3a99b62584abb94f7384e Mon Sep 17 00:00:00 2001 From: Emilio Date: Fri, 11 Oct 2024 14:30:32 -0400 Subject: [PATCH] GEOMESA-3404 Provide BOM module (#3216) --- README.md | 22 +- build/templates/README.md | 22 +- docs/user/download.rst | 18 +- docs/user/index.rst | 4 +- docs/user/install.rst | 2 +- .../geomesa-bom/generate-pom.sh | 67 +++ geomesa-utils-parent/geomesa-bom/pom.xml | 509 ++++++++++++++++++ geomesa-utils-parent/pom.xml | 1 + 8 files changed, 635 insertions(+), 10 deletions(-) create mode 100755 geomesa-utils-parent/geomesa-bom/generate-pom.sh create mode 100644 geomesa-utils-parent/geomesa-bom/pom.xml 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