<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ 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.
  ~
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.skywalking</groupId>
        <artifactId>apm-sdk-plugin</artifactId>
        <version>8.7.0</version>
    </parent>

    <artifactId>spring-plugins</artifactId>
    <modules>
        <module>async-annotation-plugin</module>
        <module>concurrent-util-4.x-plugin</module>
        <module>resttemplate-4.x-plugin</module>
        <module>mvc-annotation-4.x-plugin</module>
        <module>spring-cloud</module>
        <module>mvc-annotation-3.x-plugin</module>
        <module>core-patch</module>
        <module>mvc-annotation-commons</module>
        <module>spring-commons</module>
        <module>mvc-annotation-5.x-plugin</module>
        <module>spring-kafka-1.x-plugin</module>
        <module>spring-kafka-2.x-plugin</module>
        <module>scheduled-annotation-plugin</module>
        <module>spring-webflux-5.x-webclient-plugin</module>
    </modules>
    <packaging>pom</packaging>

    <name>apm-sdk-plugin</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <sdk.plugin.related.dir>/..</sdk.plugin.related.dir>
    </properties>

</project>
