/*
 * 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.
 */

rootProject.name = 'incubator-eventmesh'
String jdkVersion = "${jdk}"
include 'eventmesh-runtime'
include 'eventmesh-sdk-java'
include 'eventmesh-common'
include 'eventmesh-starter'
include 'eventmesh-examples'
include 'eventmesh-spi'
include 'eventmesh-connector-plugin:eventmesh-connector-api'
include 'eventmesh-connector-plugin:eventmesh-connector-rocketmq'
include 'eventmesh-connector-plugin:eventmesh-connector-standalone'
include 'eventmesh-security-plugin:eventmesh-security-api'
include 'eventmesh-security-plugin:eventmesh-security-acl'
include 'eventmesh-registry-plugin:eventmesh-registry-api'
include 'eventmesh-registry-plugin:eventmesh-registry-nacos'
include 'eventmesh-registry-plugin:eventmesh-registry-etcd'
include 'eventmesh-registry-plugin:eventmesh-registry-consul'
include 'eventmesh-admin'
include 'eventmesh-protocol-plugin'
include 'eventmesh-protocol-plugin:eventmesh-protocol-api'
include 'eventmesh-protocol-plugin:eventmesh-protocol-openmessage'
include 'eventmesh-protocol-plugin:eventmesh-protocol-cloudevents'
include 'eventmesh-protocol-plugin:eventmesh-protocol-meshmessage'
include 'eventmesh-protocol-plugin:eventmesh-protocol-http'
include 'eventmesh-admin:eventmesh-admin-rocketmq'
include 'eventmesh-protocol-plugin:eventmesh-protocol-grpc'
include 'eventmesh-protocol-plugin:eventmesh-protocol-grpcmessage'
include 'eventmesh-metrics-plugin'
include 'eventmesh-metrics-plugin:eventmesh-metrics-api'
include 'eventmesh-metrics-plugin:eventmesh-metrics-prometheus'

include 'eventmesh-security-plugin:eventmesh-security-auth-http-basic'

include 'eventmesh-trace-plugin'
include 'eventmesh-trace-plugin:eventmesh-trace-api'
include 'eventmesh-trace-plugin:eventmesh-trace-zipkin'


include 'eventmesh-webhook'
include 'eventmesh-webhook:eventmesh-webhook-api'
include 'eventmesh-webhook:eventmesh-webhook-admin'
include 'eventmesh-webhook:eventmesh-webhook-receive'

