diff --git a/arithmetization/build.gradle b/arithmetization/build.gradle index cae321f855..f28277e27f 100644 --- a/arithmetization/build.gradle +++ b/arithmetization/build.gradle @@ -17,7 +17,7 @@ plugins { id 'java-library' id 'common-plugins' id 'com.github.hierynomus.license' - id "de.undercouch.download" + id 'net.consensys.besu-plugin-library' } group = 'net.consensys.linea.besu.plugin' @@ -25,7 +25,6 @@ version = rootProject.version apply from: rootProject.file("gradle/java.gradle") apply from: rootProject.file("gradle/dependency-management.gradle") -apply from: rootProject.file("gradle/common-dependencies.gradle") apply from: rootProject.file("gradle/corset.gradle") apply from: rootProject.file("gradle/tests.gradle") apply from: rootProject.file("gradle/build-aliases.gradle") @@ -33,31 +32,13 @@ apply from: rootProject.file("gradle/check-licenses.gradle") apply from: rootProject.file("gradle/lint.gradle") dependencies { - implementation "${besuArtifactGroup}:besu-datatypes" - implementation "${besuArtifactGroup}:besu-evm" - implementation "${besuArtifactGroup}:besu-plugin-api" - implementation "${besuArtifactGroup}.internal:besu-consensus-clique" - implementation "${besuArtifactGroup}.internal:besu-crypto-algorithms" - implementation "${besuArtifactGroup}.internal:besu-ethereum-api" - implementation "${besuArtifactGroup}.internal:besu-ethereum-core" - implementation "${besuArtifactGroup}.internal:besu-ethereum-rlp" - - implementation "org.hyperledger.besu:gnark:1.4.1-SNAPSHOT" - // implementation "${besuArtifactGroup}:gnark" - implementation 'net.java.dev.jna:jna:5.13.0' - + implementation 'org.hyperledger.besu:gnark:1.4.1-SNAPSHOT' implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' - implementation 'info.picocli:picocli' - implementation 'com.google.code.gson:gson' - - implementation 'io.consensys.tuweni:tuweni-bytes' - implementation 'io.consensys.tuweni:tuweni-units' - implementation 'io.consensys.tuweni:tuweni-toml' - - implementation 'io.vertx:vertx-web' - - testImplementation project(path: ':testing') + testImplementation project(':testing') + testImplementation 'org.assertj:assertj-core' testImplementation 'org.junit.platform:junit-platform-launcher' + testImplementation 'org.junit.jupiter:junit-jupiter-api' + testImplementation 'org.junit.jupiter:junit-jupiter-params' } jar { @@ -75,14 +56,3 @@ jar { } apply from: rootProject.file("gradle/publishing.gradle") - -configure(allprojects) { - repositories { - maven { - url 'https://hyperledger.jfrog.io/artifactory/besu-maven' - content { includeGroupByRegex('org\\.hyperledger\\..*') } - } - - mavenCentral() - } -} diff --git a/build.gradle b/build.gradle index c487619a30..27b2277d97 100644 --- a/build.gradle +++ b/build.gradle @@ -1,16 +1,14 @@ buildscript { ext { - besuIdentifier = "besu-${besuVersion}" - besuFilename = "${besuIdentifier}.tar.gz" - besuUrl = "${distributionBaseUrl}${besuVersion}/${besuFilename}" - besuPluginsIdentifier = "${distributionIdentifier}-${version}" besuPluginDir = File.createTempDir("plugins") } } plugins { id 'java-library' + id 'net.consensys.besu-plugin-library' version '0.1.2' + id 'net.consensys.besu-plugin-distribution' version '0.1.2' id "org.sonarqube" version "4.3.1.3277" } diff --git a/gradle.properties b/gradle.properties index 57eca665c9..4a321dc362 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,8 @@ releaseVersion=beta-v4.4-rc1 besuVersion=25.11.0-RC1-linea2 shomeiVersion=2.4-develop besuShomeiPluginVersion=v0.8.2 -besuArtifactGroup=org.hyperledger.besu +besuRepo=https://artifacts.consensys.net/public/linea-besu/maven/ distributionIdentifier=linea-tracer -distributionBaseUrl=https://github.com/Consensys/linea-besu-upstream/releases/download/ besuShomeiPluginBaseUrl=https://github.com/Consensys/besu-shomei-plugin/releases/download/ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. diff --git a/gradle/allprojects.gradle b/gradle/allprojects.gradle deleted file mode 100644 index df09767897..0000000000 --- a/gradle/allprojects.gradle +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright Consensys Software Inc. - * - * 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 - */ - -allprojects { - group = 'net.consensys.linea.besu.plugin' - version = rootProject.version - - apply from: rootProject.file("gradle/corset.gradle") - apply from: rootProject.file("gradle/java.gradle") - apply from: rootProject.file("gradle/dependency-management.gradle") - apply from: rootProject.file("gradle/check-licenses.gradle") - apply from: rootProject.file("gradle/build-aliases.gradle") - apply from: rootProject.file('gradle/common-dependencies.gradle') - apply from: rootProject.file("gradle/lint.gradle") - apply from: rootProject.file("gradle/tests.gradle") -} diff --git a/gradle/build-aliases.gradle b/gradle/build-aliases.gradle index 2b6f91c1de..7c7f3d7cdd 100644 --- a/gradle/build-aliases.gradle +++ b/gradle/build-aliases.gradle @@ -24,7 +24,7 @@ def buildAliases = [ ], 'artifacts' : [ 'jar', - 'distPlugin' + 'distZip' ] ] diff --git a/gradle/common-dependencies.gradle b/gradle/common-dependencies.gradle deleted file mode 100644 index e68a8226b8..0000000000 --- a/gradle/common-dependencies.gradle +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright Consensys Software Inc. - * - * 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 - */ - -dependencies { - implementation 'org.slf4j:slf4j-api' - - implementation 'commons-io:commons-io' - - implementation 'com.google.guava:guava' - - testImplementation 'org.apache.commons:commons-lang3' - testImplementation 'org.assertj:assertj-core' - - testImplementation 'org.junit.jupiter:junit-jupiter-api' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' - testImplementation 'org.junit.jupiter:junit-jupiter-params' - testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' - - testImplementation 'org.mockito:mockito-core' - testImplementation 'org.mockito:mockito-junit-jupiter' - - testRuntimeOnly 'ch.qos.logback:logback-core' - testRuntimeOnly 'ch.qos.logback:logback-classic' -} diff --git a/gradle/dependency-management.gradle b/gradle/dependency-management.gradle index 76f6af9a01..8f0c14de31 100644 --- a/gradle/dependency-management.gradle +++ b/gradle/dependency-management.gradle @@ -14,82 +14,10 @@ */ repositories { - maven { - url "https://artifacts.consensys.net/public/linea-besu/maven/" - content { includeGroupByRegex('org\\.hyperledger\\..*') } - } maven { url 'https://hyperledger.jfrog.io/hyperledger/besu-maven' content { includeGroupByRegex('org\\.hyperledger\\..*') } } - maven { - url 'https://artifacts.consensys.net/public/maven/maven/' - content { includeGroupByRegex('tech\\.pegasys(\\..*)?') } - } - - maven { - url 'https://splunk.jfrog.io/splunk/ext-releases-local' - content { includeGroupByRegex('com\\.splunk\\..*') } - } - mavenCentral() mavenLocal() } - -apply plugin: 'io.spring.dependency-management' - -dependencyManagement { - applyMavenExclusions = false - generatedPomCustomization { - enabled = false - } - imports { - mavenBom "${besuArtifactGroup}:bom:${besuVersion}" - } - - dependencies { - // Logging dependencies - dependencySet(group: 'ch.qos.logback', version: '1.4.9') { - entry 'logback-core' - entry 'logback-classic' - } - - dependency 'com.google.code.gson:gson:2.11.0' - } -} - - -configurations.all { - // transitive versions conflict new Besu coordinates - exclude group: "${besuArtifactGroup}.internal", module: 'dsl' - exclude group: "${besuArtifactGroup}.internal", module: 'besu' - exclude group: "${besuArtifactGroup}.internal", module: 'config' - exclude group: "${besuArtifactGroup}.internal", module: 'clique' - exclude group: "${besuArtifactGroup}.internal", module: 'common' - exclude group: "${besuArtifactGroup}.internal", module: 'ibft' - exclude group: "${besuArtifactGroup}.internal", module: 'ibftlegacy' - exclude group: "${besuArtifactGroup}.internal", module: 'merge' - exclude group: "${besuArtifactGroup}.internal", module: 'qbft' - exclude group: "${besuArtifactGroup}.internal", module: 'qbft-core' - exclude group: "${besuArtifactGroup}.internal", module: 'algorithms' - exclude group: "${besuArtifactGroup}.internal", module: 'services' - exclude group: "${besuArtifactGroup}.internal", module: 'api' - exclude group: "${besuArtifactGroup}.internal", module: 'blockcreation' - exclude group: "${besuArtifactGroup}.internal", module: 'core' - exclude group: "${besuArtifactGroup}.internal", module: 'eth' - exclude group: "${besuArtifactGroup}.internal", module: 'p2p' - exclude group: "${besuArtifactGroup}.internal", module: 'permissioning' - exclude group: "${besuArtifactGroup}.internal", module: 'referencetests' - exclude group: "${besuArtifactGroup}.internal", module: 'rlp' - exclude group: "${besuArtifactGroup}.internal", module: 'trie' - exclude group: "${besuArtifactGroup}", module: 'evm' - exclude group: "${besuArtifactGroup}.internal", module: 'metrics-core' - exclude group: "${besuArtifactGroup}", module: 'plugin-api' - exclude group: "${besuArtifactGroup}.internal", module: 'testutil' - exclude group: "${besuArtifactGroup}.internal", module: 'util' - exclude group: "${besuArtifactGroup}.internal", module: 'nat' - exclude group: "${besuArtifactGroup}.internal", module: 'tasks' - exclude group: "${besuArtifactGroup}.internal", module: 'pipeline' - exclude group: "${besuArtifactGroup}.internal", module: 'kvstore' - exclude group: "${besuArtifactGroup}.internal", module: 'enclave' -} diff --git a/gradle/dist.gradle b/gradle/dist.gradle deleted file mode 100644 index 498c97c503..0000000000 --- a/gradle/dist.gradle +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright Consensys Software Inc. - * - * 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 - */ -import de.undercouch.gradle.tasks.download.Download - -def besuDistTar = new File(new File(buildDir, "downloads"), rootProject.besuFilename) -task downloadBesu { - outputs.file(besuDistTar) - doLast { - try { - download.run { - src rootProject.besuUrl - dest besuDistTar - onlyIfModified true - } - } catch (Exception e) { - def localBesuDir = - project.hasProperty('useLocalBesuDir') - ? file("${findProperty('useLocalBesuDir')}".replaceFirst('^~', System.getProperty('user.home'))) - : new File(projectDir, "../../besu") - - def localBesuFile = new File("${localBesuDir.canonicalPath}/build/distributions/${rootProject.besuFilename}") - - logger.warn("Could not download " + rootProject.besuUrl + " trying local copy from " + localBesuFile + " as fallback") - if (!file(localBesuFile).exists()) { - throw new GradleException("Could not download Besu distribution from: " + rootProject.besuUrl + - ", and could not find it locally at ${localBesuFile} either") - } - - copy { - from localBesuFile - into besuDistTar.parentFile - } - } - } -} - -task unTarBesu(type: Copy) { - dependsOn downloadBesu - - from tarTree(besuDistTar) - into besuDistTar.parentFile -} - -def besuLibDir = new File(besuDistTar.parentFile, rootProject.besuIdentifier + '/lib') -def besuLibs = [] - -def excludeBesuProvidedDeps = { - if(besuLibs.isEmpty()) { - // Get all the dependencies that are provided by Besu - fileTree(dir: besuLibDir, include: '*.jar').visit { - FileVisitDetails details -> - besuLibs << details.file.name - } - } - // include the dependency in the jar only if it is not already provided by Besu - !besuLibs.any { artifactName -> - if(artifactName == it.name) { - return true - } - // exclude Besu group - if(it.toString().contains(besuArtifactGroup)) { - return true - } - // try ignoring the version - def libName = it.name =~ dependencyNamePattern() - def artName = artifactName =~ dependencyNamePattern() - libName[0][1] == artName[0][1] - } -} - -jar { - archiveBaseName = distributionIdentifier - version = calculateVersion() - - manifest { - attributes( - 'Specification-Title': archiveBaseName.get(), - 'Specification-Version': calculateVersion(), - 'Implementation-Title': archiveBaseName.get(), - 'Implementation-Version': calculateVersion() - ) - } -} - -/** - * Create a distribution of the plugin, that only contains the plugin jar and the - * dependencies that are not provided by Besu itself, so that is can be simply - * extracted in the Besu plugins dir. - */ -tasks.register('distPlugin', Zip) { - dependsOn unTarBesu - dependsOn installDist - - archiveBaseName = distributionIdentifier - - from("${buildDir}/libs/${distributionIdentifier}-${calculateVersion()}.jar") - from { - configurations.runtimeClasspath.filter( - excludeBesuProvidedDeps) - - } -} - -static def dependencyNamePattern() { - /(.*)(\-.*?)\.jar/ -} diff --git a/gradle/java.gradle b/gradle/java.gradle index dd413ef5b2..0de21c168d 100644 --- a/gradle/java.gradle +++ b/gradle/java.gradle @@ -20,8 +20,14 @@ if (!JavaVersion.current().isCompatibleWith(JavaVersion.VERSION_21)) { " Detected version ${JavaVersion.current()}") } -sourceCompatibility = 21 -targetCompatibility = 21 +java { + sourceCompatibility = 21 + targetCompatibility = 21 + + consistentResolution { + useCompileClasspathVersions() + } +} tasks.withType(JavaCompile) { options.compilerArgs += [ diff --git a/gradle/tests.gradle b/gradle/tests.gradle index 081e8bdf06..a96a6d4187 100644 --- a/gradle/tests.gradle +++ b/gradle/tests.gradle @@ -305,9 +305,14 @@ tasks.register("jacocoUnitFastReplayWeeklyNightlyReferenceBlockchainAndStateTest // ============================================================================= tasks.register("copyTracerPlugin", Copy) { - dependsOn(project(":plugins").tasks.findByPath("jar")) - from project(":plugins").tasks.findByPath("jar").outputs.files.collect() + dependsOn(project(":plugins").tasks.findByPath("distZip")) + from zipTree(project(":plugins").tasks.findByPath("distZip").outputs.files.singleFile) into "${System.getProperty("besu.plugins.dir")}" + eachFile { fcp -> + fcp.relativePath = new RelativePath(true, fcp.file.name) + } + includeEmptyDirs = false + duplicatesStrategy = DuplicatesStrategy.FAIL } tasks.register("downloadShomeiBesuPlugin", Download) { diff --git a/linea-constraints b/linea-constraints index 023539d3b6..7f8b4e98f7 160000 --- a/linea-constraints +++ b/linea-constraints @@ -1 +1 @@ -Subproject commit 023539d3b660b8d6501b58096f7295044b5c924c +Subproject commit 7f8b4e98f727ab54e2c08a4561d3282ebe345adc diff --git a/plugins/build.gradle b/plugins/build.gradle index 37e067db20..86d7e10651 100644 --- a/plugins/build.gradle +++ b/plugins/build.gradle @@ -15,10 +15,9 @@ plugins { id 'java' - id 'java-library-distribution' id 'common-plugins' id 'com.github.hierynomus.license' - id "de.undercouch.download" + id 'net.consensys.besu-plugin-distribution' } group = 'net.consensys.linea.besu.plugin' @@ -26,39 +25,32 @@ version = rootProject.version apply from: rootProject.file("gradle/java.gradle") apply from: rootProject.file("gradle/dependency-management.gradle") -apply from: rootProject.file('gradle/common-dependencies.gradle') apply from: rootProject.file("gradle/check-licenses.gradle") apply from: rootProject.file("gradle/lint.gradle") dependencies { - /** - * Use pluginImplementation for dependencies that are specific to this plugin - * and are not already provided by Besu. - * These dependencies are the only ones that are included in the final jar. - */ implementation project(path: ':arithmetization') +} - // annotationProcessor generates the file META-INF/services/org.hyperledger.besu.plugin.BesuPlugin - annotationProcessor 'com.google.auto.service:auto-service' - compileOnly 'com.google.auto.service:auto-service' - - implementation "${besuArtifactGroup}:besu-datatypes" - implementation "${besuArtifactGroup}:besu-evm" - implementation "${besuArtifactGroup}:besu-plugin-api" - implementation "${besuArtifactGroup}.internal:besu-consensus-clique" - implementation "${besuArtifactGroup}.internal:besu-crypto-algorithms" - implementation "${besuArtifactGroup}.internal:besu-ethereum-api" - implementation "${besuArtifactGroup}.internal:besu-ethereum-core" - implementation "${besuArtifactGroup}.internal:besu-ethereum-rlp" - - implementation 'info.picocli:picocli' - - implementation 'io.consensys.tuweni:tuweni-bytes' - implementation 'io.consensys.tuweni:tuweni-units' - implementation 'io.consensys.tuweni:tuweni-toml' +jar { + archiveBaseName = distributionIdentifier + version = calculateVersion() + + manifest { + attributes( + 'Specification-Title': archiveBaseName.get(), + 'Specification-Version': calculateVersion(), + 'Implementation-Title': archiveBaseName.get(), + 'Implementation-Version': calculateVersion() + ) + } +} - implementation 'io.vertx:vertx-web' +distributions { + main { + distributionBaseName = distributionIdentifier + } } -apply from: rootProject.file("gradle/dist.gradle") + apply from: rootProject.file("gradle/publishing.gradle") diff --git a/reference-tests/build.gradle b/reference-tests/build.gradle index b01c8368f4..d6ff6f6a60 100644 --- a/reference-tests/build.gradle +++ b/reference-tests/build.gradle @@ -17,6 +17,7 @@ import de.undercouch.gradle.tasks.download.Download plugins { id "common-plugins" id 'jacoco' + id 'net.consensys.besu-plugin-library' } jacoco { toolVersion = '0.8.12' @@ -24,7 +25,6 @@ jacoco { apply from: rootProject.file("gradle/java.gradle") apply from: rootProject.file("gradle/dependency-management.gradle") -apply from: rootProject.file('gradle/common-dependencies.gradle') apply from: rootProject.file("gradle/lint.gradle") configurations.configureEach { @@ -99,29 +99,10 @@ tasks.register("jacocoReferenceExecutionSpecBlockchainTestsReport", JacocoReport } dependencies { - testImplementation "${besuArtifactGroup}:besu-datatypes" - testImplementation "${besuArtifactGroup}:besu-evm" - testImplementation "${besuArtifactGroup}:besu-plugin-api" - testImplementation "${besuArtifactGroup}.internal:besu-config" - testImplementation "${besuArtifactGroup}.internal:besu-crypto-algorithms" - testImplementation "${besuArtifactGroup}.internal:besu-ethereum-core" - testImplementation group: "${besuArtifactGroup}.internal", name: "besu-ethereum-core", classifier: "test-support" - testImplementation "${besuArtifactGroup}.internal:besu-ethereum-referencetests" - testImplementation "${besuArtifactGroup}.internal:besu-ethereum-rlp" - testImplementation "${besuArtifactGroup}.internal:besu-ethereum-trie" - testImplementation "${besuArtifactGroup}.internal:besu-metrics-core" - testImplementation "${besuArtifactGroup}.internal:besu-testutil" - testImplementation "${besuArtifactGroup}.internal:besu-util" - implementation "org.hyperledger.besu:gnark:1.4.1-SNAPSHOT" - - testImplementation 'io.consensys.tuweni:tuweni-bytes' - testImplementation 'io.consensys.tuweni:tuweni-units' - - testImplementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8' - testImplementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' - - implementation project(":arithmetization") - implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' - implementation project(path: ':testing') + implementation project(':arithmetization') + implementation project(':testing') implementation 'org.junit.platform:junit-platform-launcher' + + testImplementation 'org.assertj:assertj-core' + testImplementation 'org.junit.jupiter:junit-jupiter-params' } diff --git a/settings.gradle b/settings.gradle index a8686aaafb..e0bbb9d087 100644 --- a/settings.gradle +++ b/settings.gradle @@ -21,6 +21,14 @@ * Detailed information about configuring a multi-project build in Gradle can be found * in the user manual at https://docs.gradle.org/5.2.1/userguide/multi_project_builds.html */ +pluginManagement { + repositories { + gradlePluginPortal() + maven { + url = uri('https://raw.githubusercontent.com/Consensys/besu-plugin-gradle-plugin-artifacts/main') + } + } +} rootProject.name = 'linea-arithmetization' include 'arithmetization' diff --git a/testing/build.gradle b/testing/build.gradle index d8c1331661..336b427973 100644 --- a/testing/build.gradle +++ b/testing/build.gradle @@ -5,39 +5,19 @@ plugins { id "common-plugins" id "org.web3j" version "4.12.2" id "linea.yul-plugin" + id 'net.consensys.besu-plugin-library' } apply from: rootProject.file("gradle/java.gradle") apply from: rootProject.file("gradle/dependency-management.gradle") -apply from: rootProject.file('gradle/common-dependencies.gradle') apply from: rootProject.file("gradle/lint.gradle") dependencies { implementation project(path: ':arithmetization') - implementation "${besuArtifactGroup}:besu-datatypes" - implementation "${besuArtifactGroup}:besu-evm" - implementation "${besuArtifactGroup}:besu-plugin-api" - implementation "${besuArtifactGroup}.internal:besu-acceptance-tests-dsl" - implementation "${besuArtifactGroup}.internal:besu-config" - implementation "${besuArtifactGroup}.internal:besu-consensus-clique" - implementation "${besuArtifactGroup}.internal:besu-consensus-common" - implementation "${besuArtifactGroup}.internal:besu-crypto-algorithms" - implementation "${besuArtifactGroup}.internal:besu-crypto-services" - implementation "${besuArtifactGroup}.internal:besu-ethereum-api" - implementation "${besuArtifactGroup}.internal:besu-ethereum-core" - implementation "${besuArtifactGroup}.internal:besu-ethereum-referencetests" - implementation "${besuArtifactGroup}.internal:besu-ethereum-rlp" - implementation "${besuArtifactGroup}.internal:besu-metrics-core" - implementation "${besuArtifactGroup}.internal:besu-testutil" - implementation "${besuArtifactGroup}:gnark" - implementation group: "${besuArtifactGroup}.internal", name: "besu-ethereum-core", classifier: "test-support", version: "${besuVersion}" implementation "io.consensys.protocols.shomei:shomei:${shomeiVersion}" implementation "io.consensys.protocols.shomei:shomei-server:${shomeiVersion}" implementation 'io.micrometer:micrometer-registry-prometheus:1.11.1' - implementation 'org.awaitility:awaitility' - implementation 'com.google.code.gson:gson' - implementation 'com.google.guava:guava' implementation 'org.assertj:assertj-core' implementation 'org.junit.jupiter:junit-jupiter-api' }