35 Star 145 Fork 50

WeBank / eventmesh

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.gradle 27.78 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
import groovy.json.JsonSlurper
import org.apache.commons.io.IOUtils
import org.apache.http.client.config.RequestConfig
import org.apache.http.client.methods.CloseableHttpResponse
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.CloseableHttpClient
import org.apache.http.impl.client.HttpClients
import org.apache.http.util.EntityUtils
import java.nio.charset.StandardCharsets
import java.nio.file.Files
import java.nio.file.Paths
import java.util.concurrent.TimeUnit
buildscript {
repositories {
mavenCentral()
maven {
url "https://maven.aliyun.com/repository/public"
}
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "com.github.spotbugs.snom:spotbugs-gradle-plugin:5.0.14"
classpath "io.spring.gradle:dependency-management-plugin:1.0.11.RELEASE"
classpath "com.diffplug.spotless:spotless-plugin-gradle:6.13.0"
classpath "org.apache.httpcomponents:httpclient:4.5.13"
classpath "commons-io:commons-io:2.11.0"
}
}
plugins {
id 'org.cyclonedx.bom' version '1.8.2'
id 'com.github.jk1.dependency-license-report' version '2.6'
}
// Remove doclint warnings that pollute javadoc logs when building
if (JavaVersion.current().isJava8()) {
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('xdoclint:none', '-quiet')
}
}
}
allprojects {
apply plugin: 'java'
apply plugin: "eclipse"
apply plugin: "idea"
apply plugin: "maven-publish"
apply plugin: "project-reports"
apply plugin: "jacoco"
apply plugin: "pmd"
apply plugin: "java-library"
apply plugin: 'signing'
apply plugin: 'checkstyle'
apply plugin: 'com.diffplug.spotless'
apply plugin: "com.github.spotbugs"
[compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
compileJava.options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
java {
sourceCompatibility = "1.8"
targetCompatibility = "1.8"
}
clean.doFirst {
delete 'build'
delete 'dist'
delete 'out'
}
checkstyle {
toolVersion = '9.0'
ignoreFailures = false
showViolations = true
maxWarnings = 0
configFile = new File("${rootDir}/style/checkStyle.xml")
configDirectory = file("${rootDir}/style")
}
checkstyleMain.exclude('**/org/apache/eventmesh/client/grpc/protos**')
.exclude('**/org/apache/eventmesh/common/protocol/grpc/cloudevents**')
.exclude('**/org/apache/eventmesh/connector/openfunction/client/EventMeshGrpcService**')
.exclude('**/org/apache/eventmesh/connector/openfunction/client/CallbackServiceGrpc**')
.exclude('**/org/apache/eventmesh/connector/jdbc/antlr**')
dependencies {
repositories {
mavenCentral()
maven {
url "https://maven.aliyun.com/repository/public"
}
}
testImplementation "org.junit.jupiter:junit-jupiter:5.6.0"
}
spotless {
enforceCheck false
java {
target project.fileTree(project.projectDir) {
include 'src/*/java/**/*.java'
exclude '**/org/apache/eventmesh/**/protos**'
exclude '**/org/apache/eventmesh/connector/openfunction/client/EventMeshGrpcService**'
exclude '**/org/apache/eventmesh/connector/openfunction/client/CallbackServiceGrpc**'
exclude '**/org/apache/eventmesh/connector/jdbc/antlr**'
exclude '**/org/apache/eventmesh/common/protocol/grpc**'
exclude '**/org/apache/eventmesh/connector/jdbc/source/dialect/snapshot/AbstractSnapshotEngine.java'
}
importOrder ('\\#org.apache.eventmesh','\\#org.apache','\\#java','\\#javax','\\#org','\\#io','\\#net','\\#junit','\\#com','\\#lombok',
'org.apache.eventmesh','org.apache','java','javax','org','io','net','junit','com','lombok')
licenseHeaderFile rootProject.file('style/checkstyle-header1.txt')
eclipse().configFile("${rootDir}/style/task/eventmesh-spotless-formatter.xml")
removeUnusedImports()
}
}
afterEvaluate {
tasks.forEach {task ->
if (task.name.contains("spotlessJava")) {
task.dependsOn(compileJava, javadoc, compileTestJava, test, processResources, processTestResources)
}
}
spotlessJava.dependsOn(subprojects.collect {it.tasks["spotlessJava"] })
}
test {
useJUnitPlatform()
}
}
tasks.register('dist') {
subprojects.forEach { subProject ->
dependsOn("${subProject.path}:jar")
}
dependsOn('generateDistLicense', 'generateDistNotice')
def includedProjects =
["eventmesh-common",
"eventmesh-meta:eventmesh-meta-api",
"eventmesh-metrics-plugin:eventmesh-metrics-api",
"eventmesh-protocol-plugin:eventmesh-protocol-api",
"eventmesh-retry:eventmesh-retry-api",
"eventmesh-runtime",
"eventmesh-security-plugin:eventmesh-security-api",
"eventmesh-spi",
"eventmesh-starter",
"eventmesh-storage-plugin:eventmesh-storage-api",
"eventmesh-trace-plugin:eventmesh-trace-api",
"eventmesh-webhook:eventmesh-webhook-api",
"eventmesh-webhook:eventmesh-webhook-admin",
"eventmesh-webhook:eventmesh-webhook-receive"]
doLast {
includedProjects.each {
def subProject = findProject(it)
logger.lifecycle('Install module: module: {}', subProject.name)
copy {
from subProject.jar.archivePath
into rootProject.file('dist/apps')
}
copy {
from subProject.file('bin')
into rootProject.file('dist/bin')
}
copy {
from subProject.file('conf')
from subProject.sourceSets.main.resources.srcDirs
into rootProject.file('dist/conf')
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
exclude 'META-INF'
}
copy {
from subProject.configurations.runtimeClasspath
into rootProject.file('dist/lib')
exclude 'eventmesh-*'
}
}
copy {
from 'tools/dist-license'
into rootProject.file('dist')
}
}
}
tasks.register('tar', Tar) {
archiveBaseName.set(project.name)
archiveVersion.set(project.version.toString())
archiveExtension.set('tar.gz')
compression = Compression.GZIP
destinationDirectory = new File(projectDir, 'build')
into('/') {
from 'dist'
}
}
tasks.register('zip', Zip) {
archiveBaseName.set(project.name)
archiveVersion.set(project.version.toString())
archiveExtension.set('zip')
destinationDirectory = new File(projectDir, 'build')
into('/') {
from 'dist'
}
}
tasks.register('installPlugin') {
var pluginProjects = subprojects.findAll {
it.file('gradle.properties').exists()
&& it.properties.containsKey('pluginType')
&& it.properties.containsKey('pluginName')
}
doLast {
String[] libJars = java.util.Optional.ofNullable(file('dist/lib').list()).orElse(new String[0])
pluginProjects.forEach(subProject -> {
var pluginType = subProject.properties.get('pluginType')
var pluginName = subProject.properties.get('pluginName')
logger.lifecycle('Install plugin: pluginType: {}, pluginInstanceName: {}, module: {}', pluginType,
pluginName, subProject.name)
copy {
from subProject.jar.archivePath
into rootProject.file("dist/plugin/${pluginType}/${pluginName}")
}
copy {
from subProject.configurations.runtimeClasspath
into rootProject.file("dist/plugin/${pluginType}/${pluginName}")
exclude(libJars)
}
copy {
from subProject.file('conf')
from subProject.sourceSets.main.resources.srcDirs
into rootProject.file("dist/conf")
exclude 'META-INF'
}
})
}
}
tasks.register('printProjects') {
getAllprojects().forEach(subProject -> {
if ("EventMesh".equals(subProject.getName())) {
return
}
println String.format("%s-%s.jar", subProject.getName(), subProject.getVersion())
})
}
cyclonedxBom {
includeConfigs = ["runtimeClasspath"]
}
tasks.register('generateDistLicense') {
dependsOn('cyclonedxBom') // Task from 'org.cyclonedx.bom' plugin
doLast {
// Inputs
def bomFile = file("$buildDir/reports/bom.json")
def bom = new JsonSlurper().parseText(bomFile.text)
def projectLicenseText = file('LICENSE').text
// Outputs
def distLicenseFile = file('tools/dist-license/LICENSE')
def licensesDir = file('tools/dist-license/licenses/java/')
if (licensesDir.exists()) {
licensesDir.eachFile { it.delete() }
} else {
licensesDir.mkdirs()
}
List<Map<String, String>> thirdPartyArtifacts = new ArrayList<Map<String, String>>()
// Parse BOM
bom.components.each { component ->
// Exclude project modules
if (!component.group.startsWith('org.apache.eventmesh')) {
component.licenses.each { artifactLicense ->
if (artifactLicense.license != null) {
Map<String, String> artifact = new HashMap<String, String>()
artifact.put("name", component.name)
artifact.put("version", component.version)
if (artifactLicense.license.id != null) {
artifact.put("license", artifactLicense.license.id)
if (artifactLicense.license.text != null) {
artifact.put("licenseContent", new String(artifactLicense.license.text.content.decodeBase64()))
}
} else {
artifact.put("license", artifactLicense.license.name)
artifact.put("licenseContent", artifactLicense.license.url)
}
thirdPartyArtifacts.add(artifact)
}
}
}
}
thirdPartyArtifacts.sort { a, b ->
def nameComparison = a.name <=> b.name
if (nameComparison == 0) {
return a.version <=> b.version
} else {
return nameComparison
}
}
def distLicenseText = projectLicenseText + "\n=======================================================================\n" +
"This distribution contains the following third-party artifacts:\n\n"
thirdPartyArtifacts.each { artifact ->
// Write licenses
def artifactLicenseFilename = artifact.license.replaceAll("/", "-") + ".txt"
def artifactLicenseFile = new File(licensesDir, artifactLicenseFilename)
if (artifact.licenseContent != null) {
artifactLicenseFile.text = artifact.licenseContent
if (isURL(artifact.licenseContent)) {
def licenseUrlFilename = artifact.licenseContent.substring(artifact.licenseContent.lastIndexOf("/") + 1)
def downloadedLicenseFilename = artifact.license.replaceAll("/", "-") + "-downloaded-" + licenseUrlFilename
def downloadedLicenseFile = new File(licensesDir, downloadedLicenseFilename)
downloadFileFromURL(artifact.licenseContent, downloadedLicenseFile.path)
}
} else {
artifactLicenseFile.text = "No license content provided by the artifact."
logger.warn("No '${artifact.license}' license content provided by ${artifact.name} ${artifact.version}. Please add manually.")
}
// Assemble LICENSE
distLicenseText += "${artifact.name} ${artifact.version} licensed under '${artifact.license}'. " +
"For details see: licenses/${artifactLicenseFilename}\n"
}
distLicenseFile.text = distLicenseText
}
}
static boolean isURL(String urlString) {
if (!urlString.startsWith("http")) {
return false
}
try {
new URL(urlString)
return true
} catch (MalformedURLException e) {
return false
}
}
void downloadFileFromURL(String urlString, String destinationPath) throws Exception {
int timeout = 5 * 1000
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(timeout)
.setConnectionRequestTimeout(timeout)
.setSocketTimeout(timeout)
.build()
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(config)
.build()
HttpGet httpGet = new HttpGet(urlString)
CloseableHttpResponse response
try {
response = httpClient.execute(httpGet)
} catch (Exception e) {
logger.error("Failed to download " + urlString + " : " + e.getMessage())
return
}
if (response.getStatusLine().getStatusCode() == 200) {
try (InputStream is = response.getEntity().getContent()) {
String respContent = IOUtils.toString(is, StandardCharsets.UTF_8)
if (respContent.startsWith("../")) {
// Follow GitHub symlink
URL baseUrl = new URL(urlString);
URL absoluteUrl = new URL(baseUrl, respContent);
downloadFileFromURL(absoluteUrl.toString(), destinationPath);
} else {
Files.write(Paths.get(destinationPath), respContent.getBytes(StandardCharsets.UTF_8))
}
}
} else {
logger.error("Failed to download " + urlString + " : " + response.getStatusLine())
}
EntityUtils.consume(response.getEntity())
response.close()
}
tasks.register('checkDeniedLicense') {
dependsOn('generateDistLicense')
doLast {
def deniedLicenses = [
"MS-LPL", "BUSL-1.1",
"CC-BY-NC-1.0", "CC-BY-NC-2.0", "CC-BY-NC-2.5", "CC-BY-NC-3.0", "CC-BY-NC-4.0",
"GPL-1.0", "GPL-2.0", "GPL-3.0", "AGPL-3.0", "LGPL-2.0", "LGPL-2.1", "LGPL-3.0",
"GPL-1.0-only", "GPL-2.0-only", "GPL-3.0-only", "AGPL-3.0-only", "LGPL-2.0-only", "LGPL-2.1-only", "LGPL-3.0-only",
"QPL-1.0", "Sleepycat", "SSPL-1.0", "CPOL-1.02",
"BSD-4-Clause", "BSD-4-Clause-UC", "NPL-1.0", "NPL-1.1", "JSON"
]
// Update exemptions according to https://github.com/apache/eventmesh/issues/4842
def allowedArtifacts = ["amqp-client", "stax-api", "javassist", "hibernate-core", "hibernate-commons-annotations", "ST4", "xsdlib"]
def licenseFile = file('tools/dist-license/LICENSE')
def lines = licenseFile.readLines()
def hasFailed = false
lines.each { line ->
deniedLicenses.each { deniedLicense ->
if (line.contains("'${deniedLicense}'")) {
def isAllowed = allowedArtifacts.any { allowedArtifact ->
line.contains(allowedArtifact)
}
if (!isAllowed) {
logger.warn("Incompatible license '${deniedLicense}' found in line: ${line}")
hasFailed = true
}
}
}
}
if (hasFailed) {
throw new GradleException("Check failed due to incompatible licenses found. Please remove these dependencies or add exemptions.")
} else {
logger.lifecycle("Check passed, no incompatible licenses found.")
}
}
}
tasks.register('generateDistNotice') {
dependsOn('generateLicenseReport') // Task from 'com.github.jk1.dependency-license-report' plugin
doLast {
// Inputs
def reportsDir = file("$buildDir/reports/dependency-license/")
def projectNoticeText = file('NOTICE').text
// Outputs
def distNoticeFile = file('tools/dist-license/NOTICE')
def distNoticeText = projectNoticeText
reportsDir.eachDir { dir ->
dir.eachFileRecurse (groovy.io.FileType.FILES) { file ->
// Find NOTICE files
if (file.name.length() >= 6 && file.name.substring(0, 6).equalsIgnoreCase("NOTICE")) {
def artifactName = dir.name.replace(".jar", "")
distNoticeText += "\n=======================================================================\n\n" +
"${artifactName} NOTICE\n" + "\n=======================================================================\n\n"
distNoticeText += file.text
}
}
}
distNoticeFile.text = distNoticeText
}
}
subprojects {
apply plugin: "io.spring.dependency-management"
sourceSets {
main {
java.srcDirs = ['src/main/java']
}
test {
java.srcDirs = ['src/test/java']
}
}
clean.doFirst {
delete 'build'
delete 'dist'
}
// Print all dependencies trees, useful for finding artifacts
tasks.register('printAllDependencyTrees', DependencyReportTask) {}
jacoco {
toolVersion = "0.8.6"
}
jacocoTestReport {
reports {
xml.required = true
csv.required = false
html.required = false
}
}
spotbugs {
ignoreFailures = true
showProgress = true
showStackTraces = true
effort = 'default'
reportsDir = file("$buildDir/reports/spotbugs")
projectName = rootProject.name
release = version
extraArgs = ['-nested:false']
maxHeapSize = '256m'
}
spotbugsMain {
reports {
xml.required = false
html {
required = true
outputLocation = file("$buildDir/reports/spotbugs/main/spotbugs.html")
stylesheet = 'fancy-hist.xsl'
}
}
}
spotbugsTest {
reports {
xml.enabled = false
html {
enabled = true
destination = file("$buildDir/reports/spotbugs/test/spotbugs.html")
stylesheet = 'fancy-hist.xsl'
}
}
}
pmd {
consoleOutput = true
toolVersion = "6.23.0"
rulesMinimumPriority = 5
ruleSets = ["category/java/errorprone.xml", "category/java/bestpractices.xml"]
ignoreFailures = true
pmdMain {
excludes = ["**/org/apache/eventmesh/connector/jdbc/antlr4/autogeneration/**"]
}
}
jar {
manifest {
attributes("Specification-Version": project.version,
"Specification-Vendor": "Apache",
"Specification-Title": project.name,
"Implementation-Version": project.version,
"Implementation-Vendor": "Apache",
"Implementation-Title": project.name,
"Build-Jdk": project.findProperty("jdk")
)
}
}
javadoc {
source = sourceSets.main.java
destinationDir = reporting.file("javadoc")
options.encoding = "UTF-8"
}
task packageJavadoc(type: Jar, dependsOn: ['javadoc']) {
from project.javadoc.destinationDir
archiveClassifier.set('javadoc')
}
task packageSources(type: Jar) {
from project.sourceSets.main.allSource
archiveClassifier.set('sources')
}
artifacts {
archives jar
archives packageJavadoc
archives packageSources
}
if (!Boolean.valueOf(signEnabled)) {
tasks.whenTaskAdded { task ->
if (task.name.contains("sign")) {
task.enabled = false
}
}
}
repositories {
mavenCentral()
maven { url "https://maven.aliyun.com/repository/public" }
}
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, TimeUnit.SECONDS
resolutionStrategy.cacheDynamicVersionsFor 0, TimeUnit.SECONDS
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact packageSources
artifact packageJavadoc
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
pom {
name = 'EventMesh'
description = 'Apache EventMesh'
url = 'https://github.com/apache/eventmesh'
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'https://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
developers {
developer {
id = 'Apache EventMesh'
name = 'Apache EventMesh of ASF'
url = 'https://eventmesh.apache.org/'
}
}
scm {
connection = 'scm:git:git@github.com:apache/eventmesh.git'
developerConnection = 'scm:git:git@github.com:apache/eventmesh.git'
url = 'https://github.com/apache/eventmesh'
}
}
}
}
repositories {
maven {
def releasesRepoUrl = 'https://repository.apache.org/service/local/staging/deploy/maven2'
def snapshotsRepoUrl = 'https://repository.apache.org/content/repositories/snapshots/'
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
credentials {
username apacheUserName
password apachePassWord
}
}
}
}
signing {
sign publishing.publications.mavenJava
}
def grpcVersion = '1.43.2'
def log4jVersion = '2.22.1'
dependencyManagement {
dependencies {
dependency "org.apache.commons:commons-lang3:3.6"
dependency "org.apache.commons:commons-collections4:4.1"
dependency "org.apache.commons:commons-text:1.9"
dependency "commons-io:commons-io:2.11.0"
dependency "commons-validator:commons-validator:1.7"
dependency "com.google.guava:guava:31.0.1-jre"
dependency "org.slf4j:slf4j-api:2.0.9"
dependency "org.apache.logging.log4j:log4j-api:${log4jVersion}"
dependency "org.apache.logging.log4j:log4j-core:${log4jVersion}"
dependency "org.apache.logging.log4j:log4j-slf4j2-impl:${log4jVersion}"
dependency "com.lmax:disruptor:3.4.2"
dependency "com.fasterxml.jackson.core:jackson-databind:2.13.0"
dependency "com.fasterxml.jackson.core:jackson-core:2.13.0"
dependency "com.fasterxml.jackson.core:jackson-annotations:2.13.0"
dependency "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.0"
dependency "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.0"
dependency "com.squareup.okhttp3:okhttp:3.14.9"
dependency "org.asynchttpclient:async-http-client:2.12.0"
dependency "org.apache.httpcomponents:httpclient:4.5.13"
dependency "io.netty:netty-all:4.1.79.Final"
dependency 'io.dropwizard.metrics:metrics-core:4.1.0'
dependency "io.dropwizard.metrics:metrics-healthchecks:4.1.0"
dependency "io.dropwizard.metrics:metrics-annotation:4.1.0"
dependency "io.dropwizard.metrics:metrics-json:4.1.0"
dependency 'io.opentelemetry:opentelemetry-api:1.36.0'
dependency 'io.opentelemetry:opentelemetry-sdk:1.36.0'
dependency 'io.opentelemetry:opentelemetry-sdk-metrics:1.36.0'
dependency 'io.opentelemetry:opentelemetry-exporter-prometheus:1.36.0-alpha'
dependency 'io.opentelemetry:opentelemetry-exporter-zipkin:1.36.0'
dependency 'io.opentelemetry:opentelemetry-semconv:1.30.1-alpha'
dependency 'io.opentelemetry:opentelemetry-exporter-jaeger:1.34.1'
dependency "io.openmessaging:openmessaging-api:2.2.1-pubsub"
dependency "com.h3xstream.findsecbugs:findsecbugs-plugin:1.11.0"
dependency "com.mebigfatguy.fb-contrib:fb-contrib:7.6.0"
dependency "com.jayway.jsonpath:json-path:2.7.0"
dependency "org.springframework.boot:spring-boot-starter-web:2.7.10"
dependency "io.openmessaging:registry-server:0.0.1"
dependency "org.junit.jupiter:junit-jupiter:5.6.0"
dependency "org.junit-pioneer:junit-pioneer:1.9.1"
dependency "org.assertj:assertj-core:2.6.0"
dependency "org.mockito:mockito-core:3.8.0"
dependency "org.mockito:mockito-inline:3.8.0"
dependency "org.mockito:mockito-junit-jupiter:3.8.0"
dependency "io.cloudevents:cloudevents-core:2.4.2"
dependency "io.cloudevents:cloudevents-json-jackson:2.4.2"
dependency "io.cloudevents:cloudevents-protobuf:2.4.2"
dependency "io.grpc:grpc-core:${grpcVersion}"
dependency "io.grpc:grpc-protobuf:${grpcVersion}"
dependency "io.grpc:grpc-stub:${grpcVersion}"
dependency "io.grpc:grpc-netty:${grpcVersion}"
dependency "io.grpc:grpc-netty-shaded:${grpcVersion}"
dependency "javax.annotation:javax.annotation-api:1.3.2"
dependency "com.github.seancfoley:ipaddress:5.3.3"
dependency "com.google.code.gson:gson:2.8.2"
dependency "org.yaml:snakeyaml:1.30"
dependency "org.javassist:javassist:3.24.0-GA"
dependency "com.alibaba.nacos:nacos-client:2.2.1"
dependency 'org.apache.zookeeper:zookeeper:3.7.1'
dependency 'org.apache.curator:curator-client:5.4.0'
dependency 'org.apache.curator:curator-framework:5.4.0'
dependency 'org.apache.curator:curator-recipes:5.4.0'
dependency 'org.apache.curator:curator-test:5.4.0'
dependency "org.projectlombok:lombok:1.18.22"
dependency "com.github.seancfoley:ipaddress:5.3.3"
dependency "javax.annotation:javax.annotation-api:1.3.2"
dependency "com.alibaba.fastjson2:fastjson2:2.0.48"
dependency "software.amazon.awssdk:s3:2.20.29"
dependency "com.github.rholder:guava-retrying:2.0.0"
}
}
}
Java
1
https://gitee.com/WeBank/EventMesh.git
git@gitee.com:WeBank/EventMesh.git
WeBank
EventMesh
eventmesh
master

搜索帮助