diff --git a/CHANGELOG.md b/CHANGELOG.md
index c581fbd03..2234201da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@
### Additions and Improvements
- Fine tune already seen txs tracker when a tx is removed from the pool [#7755](https://github.com/hyperledger/besu/pull/7755)
+- Create and publish Besu BOM (Bill of Materials) [#7615](https://github.com/hyperledger/besu/pull/7615)
### Bug fixes
diff --git a/acceptance-tests/tests/build.gradle b/acceptance-tests/tests/build.gradle
index 8bb8fb2f2..809d82957 100644
--- a/acceptance-tests/tests/build.gradle
+++ b/acceptance-tests/tests/build.gradle
@@ -106,7 +106,8 @@ task acceptanceTest(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
- mustRunAfter rootProject.subprojects*.test
+ def javaProjects = rootProject.subprojects - project(':platform')
+ mustRunAfter javaProjects.test
description = 'Runs ALL Besu acceptance tests (mainnet and non-mainnet).'
group = 'verification'
@@ -135,7 +136,8 @@ task acceptanceTestNotPrivacy(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
- mustRunAfter rootProject.subprojects*.test
+ def javaProjects = rootProject.subprojects - project(':platform')
+ mustRunAfter javaProjects.test
description = 'Runs MAINNET Besu acceptance tests (excluding specific non-mainnet suites).'
group = 'verification'
@@ -163,7 +165,8 @@ task acceptanceTestCliqueBft(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
- mustRunAfter rootProject.subprojects*.test
+ def javaProjects = rootProject.subprojects - project(':platform')
+ mustRunAfter javaProjects.test
description = 'Runs Clique and BFT Besu acceptance tests.'
group = 'verification'
@@ -192,7 +195,8 @@ task acceptanceTestBftSoak(type: Test) {
// Set to any time > 60 minutes to run the soak test for longer
// systemProperty 'acctests.soakTimeMins', '120'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
- mustRunAfter rootProject.subprojects*.test
+ def javaProjects = rootProject.subprojects - project(':platform')
+ mustRunAfter javaProjects.test
description = 'Runs BFT soak test.'
group = 'verification'
@@ -219,7 +223,8 @@ task acceptanceTestPermissioning(type: Test) {
setSystemProperties(test.getSystemProperties())
systemProperty 'acctests.runBesuAsProcess', 'true'
systemProperty 'java.security.properties', "${buildDir}/resources/test/acceptanceTesting.security"
- mustRunAfter rootProject.subprojects*.test
+ def javaProjects = rootProject.subprojects - project(':platform')
+ mustRunAfter javaProjects.test
description = 'Runs Permissioning Besu acceptance tests.'
group = 'verification'
diff --git a/build.gradle b/build.gradle
index 901f08f4f..de8f3e23d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,7 +27,6 @@ plugins {
id 'com.github.ben-manes.versions' version '0.51.0'
id 'com.github.jk1.dependency-license-report' version '2.9'
id 'com.jfrog.artifactory' version '5.2.5'
- id 'io.spring.dependency-management' version '1.1.6'
id 'me.champeau.jmh' version '0.7.2' apply false
id 'net.ltgt.errorprone' version '4.0.1'
id 'maven-publish'
@@ -120,12 +119,10 @@ licenseReport {
]
}
-allprojects {
+configure(allprojects - project(':platform')) {
apply plugin: 'java-library'
- apply plugin: 'io.spring.dependency-management'
apply plugin: 'jacoco'
apply plugin: 'net.ltgt.errorprone'
- apply from: "${rootDir}/gradle/versions.gradle"
version = calculateVersion()
@@ -185,6 +182,12 @@ allprojects {
}
dependencies {
+ api platform(project(':platform'))
+
+ annotationProcessor(platform(project(':platform')))
+
+ testAnnotationProcessor(platform(project(':platform')))
+
components.all(BouncyCastleCapability)
errorprone 'com.google.errorprone:error_prone_core'
// https://github.com/hyperledger/besu-errorprone-checks/
@@ -442,14 +445,16 @@ task checkMavenCoordinateCollisions {
doLast {
def coordinates = [:]
getAllprojects().forEach {
- if (it.properties.containsKey('publishing') && it.jar?.enabled) {
- def coordinate = it.publishing?.publications[0].coordinates
- if (coordinate.toString().startsWith("org") && coordinates.containsKey(coordinate)) {
- throw new GradleException("Duplicate maven coordinates detected, ${coordinate} is used by " +
- "both ${coordinates[coordinate]} and ${it.path}.\n" +
- "Please add a `publishing` script block to one or both subprojects.")
+ if (it.properties.containsKey('publishing')) {
+ if(!it.properties.containsKey('jar') || it.jar.enabled) {
+ def coordinate = it.publishing?.publications[0].coordinates
+ if (coordinate.toString().startsWith("org") && coordinates.containsKey(coordinate)) {
+ throw new GradleException("Duplicate maven coordinates detected, ${coordinate} is used by " +
+ "both ${coordinates[coordinate]} and ${it.path}.\n" +
+ "Please add a `publishing` script block to one or both subprojects.")
+ }
+ coordinates[coordinate] = it.path
}
- coordinates[coordinate] = it.path
}
}
}
@@ -597,7 +602,9 @@ subprojects {
configurations {
+ testSupportAnnotationProcessor.extendsFrom annotationProcessor
testSupportImplementation.extendsFrom implementation
+ integrationTestAnnotationProcessor.extendsFrom annotationProcessor
integrationTestImplementation.extendsFrom implementation
testSupportArtifacts
}
@@ -622,7 +629,10 @@ subprojects {
duplicateClassesStrategy = DuplicatesStrategy.WARN
}
- dependencies { jmh 'org.slf4j:slf4j-api' }
+ dependencies {
+ jmhAnnotationProcessor(platform(project(':platform')))
+ jmh 'org.slf4j:slf4j-api'
+ }
}
// making sure assemble task invokes integration test compile
diff --git a/ethereum/referencetests/build.gradle b/ethereum/referencetests/build.gradle
index 22f22c70a..48f556a5b 100644
--- a/ethereum/referencetests/build.gradle
+++ b/ethereum/referencetests/build.gradle
@@ -14,6 +14,7 @@
*/
configurations {
+ referenceTestAnnotationProcessor.extendsFrom testAnnotationProcessor
// we need this because referenceTestImplementation defaults to 'canBeResolved=false'.
tarConfig.extendsFrom referenceTestImplementation
tarConfig {
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 67e88aa20..507b031b5 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -134,6 +134,11 @@
+
+
+
+
+
@@ -144,11 +149,6 @@
-
-
-
-
-
@@ -164,6 +164,11 @@
+
+
+
+
+
@@ -213,6 +218,11 @@
+
+
+
+
+
@@ -246,9 +256,6 @@
-
-
-
@@ -285,6 +292,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -293,6 +310,11 @@
+
+
+
+
+
@@ -304,6 +326,11 @@
+
+
+
+
+
@@ -320,6 +347,11 @@
+
+
+
+
+
@@ -331,6 +363,11 @@
+
+
+
+
+
@@ -496,6 +533,11 @@
+
+
+
+
+
@@ -818,6 +860,9 @@
+
+
+
@@ -929,6 +974,14 @@
+
+
+
+
+
+
+
+
@@ -937,6 +990,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -953,6 +1029,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1177,14 +1273,6 @@
-
-
-
-
-
-
-
-
@@ -1307,9 +1395,6 @@
-
-
-
@@ -1363,6 +1448,11 @@
+
+
+
+
+
@@ -1382,10 +1472,15 @@
-
-
-
+
+
+
+
+
+
+
+
@@ -1398,6 +1493,14 @@
+
+
+
+
+
+
+
+
@@ -1467,6 +1570,11 @@
+
+
+
+
+
@@ -1532,9 +1640,6 @@
-
-
-
@@ -1600,6 +1705,11 @@
+
+
+
+
+
@@ -1789,6 +1899,11 @@
+
+
+
+
+
@@ -1807,9 +1922,9 @@
-
-
-
+
+
+
@@ -1825,14 +1940,6 @@
-
-
-
-
-
-
-
-
@@ -1841,14 +1948,6 @@
-
-
-
-
-
-
-
-
@@ -1866,9 +1965,6 @@
-
-
-
@@ -1881,15 +1977,7 @@
-
-
-
-
-
-
-
-
@@ -1934,14 +2022,6 @@
-
-
-
-
-
-
-
-
@@ -1980,9 +2060,6 @@
-
-
-
@@ -1995,15 +2072,7 @@
-
-
-
-
-
-
-
-
@@ -2024,11 +2093,6 @@
-
-
-
-
-
@@ -2053,9 +2117,6 @@
-
-
-
@@ -2087,25 +2148,25 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
@@ -2137,6 +2198,11 @@
+
+
+
+
+
@@ -2154,6 +2220,11 @@
+
+
+
+
+
@@ -2168,6 +2239,11 @@
+
+
+
+
+
@@ -2238,6 +2314,11 @@
+
+
+
+
+
@@ -2525,11 +2606,6 @@
-
-
-
-
-
@@ -2543,6 +2619,11 @@
+
+
+
+
+
@@ -2567,12 +2648,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -2628,19 +2709,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -2795,11 +2863,6 @@
-
-
-
-
-
@@ -2823,25 +2886,25 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
@@ -2849,6 +2912,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -3211,6 +3284,11 @@
+
+
+
+
+
@@ -3248,6 +3326,11 @@
+
+
+
+
+
@@ -3312,6 +3395,11 @@
+
+
+
+
+
@@ -3322,6 +3410,11 @@
+
+
+
+
+
@@ -3342,6 +3435,11 @@
+
+
+
+
+
@@ -3456,11 +3554,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3474,6 +3587,11 @@
+
+
+
+
+
@@ -3572,6 +3690,11 @@
+
+
+
+
+
@@ -3617,6 +3740,11 @@
+
+
+
+
+
@@ -3666,6 +3794,9 @@
+
+
+
@@ -4888,6 +5019,11 @@
+
+
+
+
+
@@ -4953,6 +5089,14 @@
+
+
+
+
+
+
+
+
@@ -4977,12 +5121,12 @@
-
-
-
+
+
+
-
-
+
+
@@ -5088,15 +5232,12 @@
-
-
-
+
+
+
-
-
-
-
-
+
+
@@ -5130,14 +5271,6 @@
-
-
-
-
-
-
-
-
@@ -5366,6 +5499,14 @@
+
+
+
+
+
+
+
+
@@ -5374,6 +5515,14 @@
+
+
+
+
+
+
+
+
@@ -5474,11 +5623,6 @@
-
-
-
-
-
@@ -5528,13 +5672,18 @@
-
-
-
+
+
+
+
+
+
+
+
@@ -5574,6 +5723,11 @@
+
+
+
+
+
@@ -5796,6 +5950,14 @@
+
+
+
+
+
+
+
+
@@ -5830,6 +5992,14 @@
+
+
+
+
+
+
+
+
@@ -5846,6 +6016,14 @@
+
+
+
+
+
+
+
+
@@ -5947,6 +6125,11 @@
+
+
+
+
+
@@ -5980,6 +6163,11 @@
+
+
+
+
+
@@ -6111,9 +6299,6 @@
-
-
-
@@ -6187,9 +6372,6 @@
-
-
-
@@ -6306,6 +6488,14 @@
+
+
+
+
+
+
+
+
diff --git a/gradle/versions.gradle b/gradle/versions.gradle
deleted file mode 100644
index 4796aa528..000000000
--- a/gradle/versions.gradle
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Copyright ConsenSys AG.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
- * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-dependencyManagement {
- dependencies {
- applyMavenExclusions = false
-
- dependencySet(group:'com.fasterxml.jackson.core', version:'2.17.2') {
- entry 'jackson-databind'
- entry 'jackson-datatype'
- entry 'jackson-datatype-jdk8'
- }
-
- dependency 'com.github.ben-manes.caffeine:caffeine:3.1.8'
-
- dependency 'com.google.protobuf:protobuf-java:3.25.5'
-
- dependency 'org.bitbucket.b_c:jose4j:0.9.4'
-
- dependency 'com.github.oshi:oshi-core:6.6.3'
-
- dependency 'com.google.auto.service:auto-service:1.1.1'
-
- dependencySet(group: 'com.google.dagger', version: '2.52') {
- entry'dagger-compiler'
- entry'dagger'
- }
-
- dependency 'org.hyperledger.besu:besu-errorprone-checks:1.0.0'
-
- dependency 'com.google.guava:guava:33.3.0-jre'
-
- dependency 'com.graphql-java:graphql-java:22.2'
-
- dependency 'com.splunk.logging:splunk-library-javalogging:1.11.8'
-
- dependency 'com.squareup.okhttp3:okhttp:4.12.0'
-
- dependency 'commons-codec:commons-codec:1.16.0'
-
- dependency 'commons-io:commons-io:2.16.1'
-
- dependency 'commons-net:commons-net:3.11.1'
-
- dependency 'dnsjava:dnsjava:3.6.1'
-
- dependencySet(group: 'info.picocli', version: '4.7.6') {
- entry 'picocli'
- entry 'picocli-codegen'
- }
-
- dependencySet(group: 'io.grpc', version: '1.66.0') {
- entry 'grpc-all'
- entry 'grpc-core'
- entry 'grpc-netty'
- entry 'grpc-stub'
- }
-
- dependency 'io.kubernetes:client-java:18.0.1'
-
- dependency 'io.netty:netty-all:4.1.112.Final'
- dependency 'io.netty:netty-tcnative-boringssl-static:2.0.66.Final'
- dependency group: 'io.netty', name: 'netty-transport-native-epoll', version:'4.1.112.Final', classifier: 'linux-x86_64'
- dependency group: 'io.netty', name: 'netty-transport-native-kqueue', version:'4.1.112.Final', classifier: 'osx-x86_64'
- dependency 'io.netty:netty-transport-native-unix-common:4.1.112.Final'
-
- dependency 'io.opentelemetry:opentelemetry-api:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-exporter-otlp:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-extension-trace-propagators:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-sdk-metrics:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-sdk-trace:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-sdk:1.41.0'
- dependency 'io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.41.0'
- dependency 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:2.7.0-alpha'
- dependency 'io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha'
- dependency 'io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha'
-
- dependency 'io.opentracing.contrib:opentracing-okhttp3:3.0.0'
- dependency 'io.opentracing:opentracing-api:0.33.0'
- dependency 'io.opentracing:opentracing-util:0.33.0'
-
- dependency 'io.pkts:pkts-core:3.0.10'
-
- dependencySet(group: 'io.prometheus', version: '0.16.0') {
- entry 'simpleclient'
- entry 'simpleclient_common'
- entry 'simpleclient_hotspot'
- entry 'simpleclient_pushgateway'
- entry 'simpleclient_guava'
- }
-
- dependency 'io.reactivex.rxjava2:rxjava:2.2.21'
-
- dependencySet(group: 'io.tmio', version: '2.4.2') {
- entry 'tuweni-bytes'
- entry 'tuweni-config'
- entry 'tuweni-concurrent'
- entry 'tuweni-crypto'
- entry 'tuweni-devp2p'
- entry 'tuweni-io'
- entry 'tuweni-net'
- entry 'tuweni-rlp'
- entry 'tuweni-toml'
- entry 'tuweni-units'
- }
-
- dependencySet(group: 'io.vertx', version: '4.5.9') {
- entry 'vertx-auth-jwt'
- entry 'vertx-codegen'
- entry 'vertx-core'
- entry 'vertx-junit5'
- entry 'vertx-unit'
- entry 'vertx-web'
- entry 'vertx-web-client'
- entry 'vertx-auth-jwt'
- }
-
- dependency 'junit:junit:4.13.2'
-
- dependency 'net.java.dev.jna:jna:5.14.0'
-
- dependencySet(group: 'org.antlr', version: '4.11.1') {
- entry 'antlr4'
- entry 'antlr4-runtime'
- }
-
- dependency 'org.apache.commons:commons-collections4:4.4'
- dependency 'org.apache.commons:commons-compress:1.27.1'
- dependency 'org.apache.commons:commons-lang3:3.17.0'
- dependency 'org.apache.commons:commons-text:1.12.0'
-
- dependencySet(group: 'org.apache.logging.log4j', version: '2.23.1') {
- entry 'log4j-api'
- entry 'log4j-core'
- entry 'log4j-jul'
- entry 'log4j-slf4j2-impl'
- }
-
- dependency 'org.assertj:assertj-core:3.26.3'
-
- dependency 'org.awaitility:awaitility:4.2.2'
-
- dependencySet(group: 'org.bouncycastle', version: '1.78.1') {
- entry'bcpkix-jdk18on'
- entry'bcprov-jdk18on'
- }
-
- dependency 'org.fusesource.jansi:jansi:2.4.1'
-
- dependencySet(group: 'org.hyperledger.besu', version: '0.9.7') {
- entry 'arithmetic'
- entry 'ipa-multipoint'
- entry 'bls12-381'
- entry 'secp256k1'
- entry 'secp256r1'
- entry 'blake2bf'
- entry 'gnark'
- }
-
- dependencySet(group: 'org.immutables', version: '2.10.1') {
- entry 'value-annotations'
- entry 'value'
- }
-
- dependency 'org.java-websocket:Java-WebSocket:1.5.7'
-
- dependencySet(group: 'org.jacoco', version: '0.8.12') {
- entry 'org.jacoco.agent'
- entry 'org.jacoco.core'
- }
-
- dependency 'org.jetbrains.kotlin:kotlin-stdlib:2.0.20'
-
- dependencySet(group: 'org.junit.jupiter', version: '5.11.0') {
- entry 'junit-jupiter'
- entry 'junit-jupiter-api'
- entry 'junit-jupiter-engine'
- entry 'junit-jupiter-params'
- }
-
- dependency 'org.openjdk.jol:jol-core:0.17'
-
- dependency 'org.junit.platform:junit-platform-runner:1.9.2'
-
- dependency 'org.junit.vintage:junit-vintage-engine:5.10.1'
-
- dependencySet(group: 'org.jupnp', version:'3.0.2') {
- entry 'org.jupnp.support'
- entry 'org.jupnp'
- }
-
- dependencySet(group: 'org.mockito', version:'5.13.0') {
- entry 'mockito-core'
- entry 'mockito-junit-jupiter'
- }
-
- dependencySet(group: 'org.openjdk.jmh', version:'1.37') {
- entry 'jmh-core'
- entry 'jmh-generator-annprocess'
- }
-
- dependency 'org.owasp.encoder:encoder:1.3.1'
-
- dependency 'org.rocksdb:rocksdbjni:8.3.2' // 8.9.1 causes a bug with a FOREST canary
-
- dependencySet(group: 'org.slf4j', version:'2.0.16') {
- entry 'slf4j-api'
- entry 'slf4j-nop'
- }
-
- dependency 'org.springframework.security:spring-security-crypto:6.3.3'
-
- dependency 'org.testcontainers:testcontainers:1.20.1'
-
- dependency 'org.web3j:quorum:4.10.0'
- dependencySet(group: 'org.web3j', version: '4.12.1') {
- entry 'abi'
- entry 'besu'
- entry 'core'
- entry 'crypto'
- }
-
- dependencySet(group: 'org.wiremock', version: '3.9.1') {
- entry 'wiremock'
- }
-
- dependency 'org.xerial.snappy:snappy-java:1.1.10.6'
-
- dependency 'org.yaml:snakeyaml:2.0'
-
- dependency 'org.apache.maven:maven-artifact:3.9.6'
-
- dependency 'tech.pegasys:jc-kzg-4844:1.0.0'
-
- dependency 'tech.pegasys.discovery:discovery:24.6.0'
- }
-}
diff --git a/platform/build.gradle b/platform/build.gradle
new file mode 100644
index 000000000..7234a1006
--- /dev/null
+++ b/platform/build.gradle
@@ -0,0 +1,218 @@
+/*
+ * Copyright contributors to Hyperledger Besu.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
+ * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+plugins {
+ id 'java-platform'
+ id 'com.diffplug.spotless'
+ id 'maven-publish'
+}
+
+repositories {
+ mavenCentral()
+}
+
+javaPlatform {
+ allowDependencies()
+}
+
+dependencies {
+ api platform('com.fasterxml.jackson:jackson-bom:2.17.2')
+ api platform('io.grpc:grpc-bom:1.66.0')
+ api platform('io.netty:netty-bom:4.1.112.Final')
+ api platform('io.opentelemetry:opentelemetry-bom:1.41.0')
+ api platform('io.prometheus:simpleclient_bom:0.16.0')
+ api platform('io.vertx:vertx-stack-depchain:4.5.9')
+ api platform('org.apache.logging.log4j:log4j-bom:2.23.1')
+ api platform('org.assertj:assertj-bom:3.26.3')
+ api platform('org.immutables:bom:2.10.1')
+ api platform('org.junit:junit-bom:5.11.0')
+ api platform('org.mockito:mockito-bom:5.13.0')
+ api platform('org.slf4j:slf4j-bom:2.0.16')
+
+ constraints {
+ api project(':acceptance-tests:dsl')
+ api project(':besu')
+ api project(':config')
+ api project(':crypto:algorithms')
+ api project(':crypto:services')
+ api project(':ethereum:api')
+ api project(':ethereum:blockcreation')
+ api project(':ethereum:core')
+ api project(':ethereum:eth')
+ api project(':ethereum:p2p')
+ api project(':ethereum:permissioning')
+ api project(':ethereum:referencetests')
+ api project(':ethereum:rlp')
+ api project(':evm')
+ api project(':datatypes')
+ api project(':plugin-api')
+
+ api 'com.github.ben-manes.caffeine:caffeine:3.1.8'
+
+ api 'org.bitbucket.b_c:jose4j:0.9.4'
+
+ api 'com.github.oshi:oshi-core:6.6.3'
+
+ api 'com.google.auto.service:auto-service:1.1.1'
+
+ api 'com.google.dagger:dagger-compiler:2.52'
+ api 'com.google.dagger:dagger:2.52'
+
+ api 'com.google.guava:guava:33.3.0-jre'
+
+ api 'com.google.protobuf:protobuf-java:3.25.5'
+
+ api 'com.graphql-java:graphql-java:22.2'
+
+ api 'com.splunk.logging:splunk-library-javalogging:1.11.8'
+
+ api 'com.squareup.okhttp3:okhttp:4.12.0'
+
+ api 'commons-io:commons-io:2.16.1'
+
+ api 'commons-net:commons-net:3.11.1'
+
+ api 'dnsjava:dnsjava:3.6.1'
+
+ api 'info.picocli:picocli:4.7.6'
+ api 'info.picocli:picocli-codegen:4.7.6'
+
+ api 'io.kubernetes:client-java:18.0.1'
+
+ api 'io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0:2.7.0-alpha'
+ api 'io.opentelemetry.proto:opentelemetry-proto:1.3.2-alpha'
+ api 'io.opentelemetry.semconv:opentelemetry-semconv:1.27.0-alpha'
+
+ api 'io.opentracing:opentracing-api:0.33.0'
+ api 'io.opentracing:opentracing-util:0.33.0'
+ api 'io.opentracing.contrib:opentracing-okhttp3:3.0.0'
+
+ api 'io.pkts:pkts-core:3.0.10'
+
+ api 'io.tmio:tuweni-bytes:2.4.2'
+ api 'io.tmio:tuweni-config:2.4.2'
+ api 'io.tmio:tuweni-concurrent:2.4.2'
+ api 'io.tmio:tuweni-crypto:2.4.2'
+ api 'io.tmio:tuweni-devp2p:2.4.2'
+ api 'io.tmio:tuweni-io:2.4.2'
+ api 'io.tmio:tuweni-net:2.4.2'
+ api 'io.tmio:tuweni-rlp:2.4.2'
+ api 'io.tmio:tuweni-toml:2.4.2'
+ api 'io.tmio:tuweni-units:2.4.2'
+
+ api 'junit:junit:4.13.2'
+
+ api 'net.java.dev.jna:jna:5.14.0'
+
+ api 'org.antlr:antlr4:4.11.1'
+ api 'org.antlr:antlr4-runtime:4.11.1'
+
+ api 'org.apache.commons:commons-collections4:4.4'
+ api 'org.apache.commons:commons-compress:1.27.1'
+ api 'org.apache.commons:commons-lang3:3.17.0'
+ api 'org.apache.commons:commons-text:1.12.0'
+
+ api 'org.apache.maven:maven-artifact:3.9.6'
+
+ api 'org.awaitility:awaitility:4.2.2'
+
+ api 'org.bouncycastle:bcpkix-jdk18on:1.78.1'
+ api 'org.bouncycastle:bcprov-jdk18on:1.78.1'
+
+ api 'org.fusesource.jansi:jansi:2.4.1'
+
+ api 'org.hyperledger.besu:arithmetic:0.9.7'
+ api 'org.hyperledger.besu:blake2bf:0.9.7'
+ api 'org.hyperledger.besu:bls12-381:0.9.7'
+ api 'org.hyperledger.besu:gnark:0.9.7'
+ api 'org.hyperledger.besu:ipa-multipoint:0.9.7'
+ api 'org.hyperledger.besu:secp256k1:0.9.7'
+ api 'org.hyperledger.besu:secp256r1:0.9.7'
+
+ api 'org.hyperledger.besu:besu-errorprone-checks:1.0.0'
+
+ api 'org.jacoco:org.jacoco.agent:0.8.12'
+ api 'org.jacoco:org.jacoco.core:0.8.12'
+
+ api 'org.junit.platform:junit-platform-runner:1.9.2'
+ api 'org.junit.vintage:junit-vintage-engine:5.10.1'
+
+ api 'org.jupnp:org.jupnp:3.0.2'
+ api 'org.jupnp:org.jupnp.support:3.0.2'
+
+ api 'org.openjdk.jmh:jmh-core:1.37'
+ api 'org.openjdk.jmh:jmh-generator-annprocess:1.37'
+
+ api 'org.openjdk.jol:jol-core:0.17'
+
+ api 'org.owasp.encoder:encoder:1.3.1'
+
+ api 'org.rocksdb:rocksdbjni:8.3.2'
+
+ api 'org.springframework.security:spring-security-crypto:6.3.3'
+
+ api 'org.testcontainers:testcontainers:1.20.1'
+
+ api 'org.wiremock:wiremock:3.9.1'
+
+ api 'org.web3j:abi:4.12.1'
+ api 'org.web3j:besu:4.12.1'
+ api 'org.web3j:core:4.12.1'
+ api 'org.web3j:crypto:4.12.1'
+ api 'org.web3j:quorum:4.10.0'
+
+ api 'org.xerial.snappy:snappy-java:1.1.10.6'
+
+ api 'tech.pegasys:jc-kzg-4844:1.0.0'
+
+ api 'tech.pegasys.discovery:discovery:24.6.0'
+ }
+}
+
+
+spotless {
+ // spotless check applied to build.gradle (groovy) files
+ groovyGradle {
+ target '*.gradle'
+ greclipse('4.31').configFile(rootProject.file('gradle/spotless/greclipse.properties'))
+ endWithNewline()
+ }
+}
+
+publishing {
+ publications {
+ mavenPlatform(MavenPublication) {
+ from components.javaPlatform
+ groupId "org.hyperledger.besu"
+ artifactId 'bom'
+ version calculateVersion()
+
+ pom {
+ name = "Besu BOM"
+ url = 'http://github.com/hyperledger/besu'
+ licenses {
+ license {
+ name = 'The Apache License, Version 2.0'
+ url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ scm {
+ connection = 'scm:git:git://github.com/hyperledger/besu.git'
+ developerConnection = 'scm:git:ssh://github.com/hyperledger/besu.git'
+ url = 'https://github.com/hyperledger/besu'
+ }
+ }
+ }
+ }
+}
diff --git a/settings.gradle b/settings.gradle
index 322383b32..2860c666d 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -62,6 +62,7 @@ include 'metrics:core'
include 'metrics:rocksdb'
include 'nat'
include 'pki'
+include 'platform'
include 'plugin-api'
include 'plugins:rocksdb'
include 'privacy-contracts'