<?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.camel</groupId>
        <artifactId>components</artifactId>
        <version>4.0.0-M2</version>
    </parent>

    <artifactId>camel-spring-xml</artifactId>
    <packaging>jar</packaging>

    <name>Camel :: Spring XML</name>
    <description>Camel Spring with XML DSL</description>

    <properties>
        <firstVersion>3.9.0</firstVersion>
        <label>spring</label>
        <supportLevel>Stable</supportLevel>
        <title>Spring XML</title>

        <camel.surefire.forkCount>4</camel.surefire.forkCount>
        <camel.surefire.parallel>false</camel.surefire.parallel>
        <camel.surefire.forkTimeout>1800</camel.surefire.forkTimeout>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-xml-jaxb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-xml-jaxp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core-xml</artifactId>
        </dependency>

        <!-- for testing -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.awaitility</groupId>
            <artifactId>awaitility</artifactId>
            <version>${awaitility-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-cloud</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-test-junit5</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-management</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-core</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-management</artifactId>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-bean</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-cron</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.derby</groupId>
            <artifactId>derby</artifactId>
            <version>${derby-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <version>${hamcrest-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.annotation</groupId>
            <artifactId>jakarta.annotation-api</artifactId>
        </dependency>

        <!-- assertj and woostox are used for a few tests -->
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>${assertj-version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.woodstox</groupId>
            <artifactId>woodstox-core</artifactId>
            <version>${woodstox-core-version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>target/schema</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <excludes>
                    <exclude>**/*.class</exclude>
                </excludes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.apache.camel</groupId>
                                <artifactId>camel-spring-xml</artifactId>
                                <version>${project.version}</version>
                                <type>jar</type>
                                <overWrite>false</overWrite>
                                <outputDirectory>${project.build.directory}/schema</outputDirectory>
                                <includes>*.xsd</includes>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </plugin>
                <!-- Eclipse m2e Lifecycle Management -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>${lifecycle-mapping-version}</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.codehaus.mojo</groupId>
                                        <artifactId>properties-maven-plugin</artifactId>
                                        <versionRange>[0.0.0,)</versionRange>
                                        <goals>
                                            <goal>read-project-properties</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>${maven-antrun-plugin-version}</versionRange>
                                        <goals>
                                            <goal>run</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-schema</id>
                        <phase>generate-test-sources</phase>
                        <goals>
                            <goal>schemagen</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outputDirectory>${project.build.directory}/schema</outputDirectory>
                    <sources>
                        <source>${project.build.directory}/schema-src</source>
                    </sources>
                    <createJavaDocAnnotations>false</createJavaDocAnnotations>
                    <schemaSourceExcludeFilters>
                        <filter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
                            <patterns>
                                <pattern>Helper.java</pattern>
                                <pattern>Adapter.java</pattern>
                            </patterns>
                        </filter>
                    </schemaSourceExcludeFilters>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-generated-resources-jaxb</id>
                        <goals>
                            <goal>resources</goal>
                        </goals>
                        <phase>process-classes</phase>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>${basedir}/target/generated/camel/jaxb</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>${platform.skip.tests}</exclude>
                        <exclude>**/*IntegrationTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <configuration>
                    <skipTests>${skipTests}</skipTests>
                    <reuseForks>true</reuseForks>
                    <systemPropertyVariables>
                        <visibleassertions.silence>true</visibleassertions.silence>
                    </systemPropertyVariables>
                    <excludes>
                        <exclude>${platform.skip.tests}</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- unpack sources which are needed for the scheme generator -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.2</version>
                <executions>
                    <execution>
                        <id>process-sources</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>org.apache.camel</groupId>
                                    <artifactId>camel-api</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <includes>**/*</includes>
                                    <outputDirectory>target/sources/camel-api</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.camel</groupId>
                                    <artifactId>camel-core-model</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <includes>**/*</includes>
                                    <excludes>**/*Configurer.java</excludes>
                                    <outputDirectory>target/sources/camel-core-model</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.camel</groupId>
                                    <artifactId>camel-core-xml</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <includes>**/*</includes>
                                    <outputDirectory>target/sources/camel-core-xml</outputDirectory>
                                </artifactItem>
                                <artifactItem>
                                    <groupId>org.apache.camel</groupId>
                                    <artifactId>camel-util</artifactId>
                                    <version>${project.version}</version>
                                    <type>jar</type>
                                    <classifier>sources</classifier>
                                    <overWrite>true</overWrite>
                                    <includes>**/*</includes>
                                    <outputDirectory>target/sources/camel-util</outputDirectory>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <id>store-camel-schema-version-in-file</id>
                        <phase>initialize</phase>
                        <configuration>
                            <target>
                                <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.plugin.classpath" />
                                <property name="ant.regexp.regexpimpl" value="org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp" />
                                <property name="mv" value="${project.version}" />
                                <propertyregex property="ov.p1" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace="\1" defaultValue="0" />
                                <propertyregex property="ov.p2" input="${mv}" regexp="(\d+)(?:\.(\d+)(?:\.(\d+))?)?(?:[^a-zA-Z0-9](.*))?" replace=".\2" defaultValue=".0" />
                                <propertyregex property="ov.p1a" input="${ov.p1}" regexp="(.+)" replace="\1" defaultValue="0" />
                                <propertyregex property="ov.p2a" input="${ov.p2}" regexp="(\..+)" replace="\1" defaultValue=".0" />
                                <property name="camel.schema.version" value="${ov.p1a}${ov.p2a}" />
                                <mkdir dir="target" />
                                <mkdir dir="${project.build.directory}/schema/META-INF/JAXB" />
                                <echo file="target/camel.osgi.version.txt">
                                    camel.schema.version = ${camel.schema.version}
                                </echo>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>generate-sources</id>
                        <phase>process-classes</phase>
                        <configuration>
                            <target>
                                <echo>Copying code together for the XSD generation</echo>
                                <mkdir dir="${project.build.directory}/schema-src" />
                                <copy todir="${project.build.directory}/schema-src">
                                    <fileset dir="${basedir}/src/main/java">
                                        <include name="org/apache/camel/spring/xml/package-info.java" />
                                        <include name="org/apache/camel/spring/xml/CamelBeanPostProcessor.java" />
                                        <include name="org/apache/camel/spring/xml/ErrorHandler*.java" />
                                        <include name="org/apache/camel/spring/xml/*FactoryBean.java" />
                                    </fileset>
                                    <fileset dir="${project.build.directory}/sources/camel-core-xml">
                                        <include name="org/apache/camel/core/xml/*.java" />
                                        <include name="org/apache/camel/core/xml/util/**/*.java" />
                                    </fileset>
                                    <fileset dir="${project.build.directory}/sources/camel-api">
                                        <include name="org/apache/camel/BeanScope.java" />
                                        <include name="org/apache/camel/ExchangePattern.java" />
                                        <include name="org/apache/camel/LoggingLevel.java" />
                                        <include name="org/apache/camel/ManagementStatisticsLevel.java" />
                                        <include name="org/apache/camel/ShutdownRoute.java" />
                                        <include name="org/apache/camel/ShutdownRunningTask.java" />
                                        <include name="org/apache/camel/StartupSummaryLevel.java" />
                                        <include name="org/apache/camel/TypeConverterExists.java" />
                                        <include name="org/apache/camel/WaitForTaskToComplete.java" />
                                    </fileset>
                                    <fileset dir="${project.build.directory}/sources/camel-core-model">
                                        <include name="org/apache/camel/model/**/*.java" />
                                        <include name="org/apache/camel/package-info.java" />
                                    </fileset>
                                    <fileset dir="${project.build.directory}/sources/camel-util">
                                        <include name="org/apache/camel/concurrent/ThreadPoolRejectedPolicy.java" />
                                    </fileset>
                                </copy>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <!-- after the eip-documentation-enricher we need to copy some schema files -->
                    <execution>
                        <id>include-schemas</id>
                        <phase>prepare-package</phase>
                        <configuration>
                            <target>
                                <echo>Copying XSD schema to be included in JAR</echo>
                                <copy file="${project.build.directory}/classes/camel-spring.xsd" tofile="${project.build.directory}/schema/camel-spring.xsd" preservelastmodified="true" />
                                <copy file="${project.build.directory}/classes/camel-spring.xsd" tofile="${project.build.directory}/schema/camel-spring-v${camel.schema.version}.xsd" preservelastmodified="true" />
                                <replace file="${project.build.directory}/schema/camel-spring-v${camel.schema.version}.xsd" token="&quot;http://camel.apache.org/schema/spring&quot;" value="&quot;http://camel.apache.org/schema/spring/v${camel.schema.version}&quot;" preservelastmodified="true" />
                                <!-- copy modified schemas back again in classes so they are included in the JAR -->
                                <copy todir="${project.build.directory}/classes" preservelastmodified="true">
                                    <fileset dir="${project.build.directory}/schema">
                                        <exclude name="**/*.class" />
                                    </fileset>
                                </copy>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>copy-spring-meta-filter</id>
                        <phase>process-resources</phase>
                        <configuration>
                            <target>
                                <echo>Copying spring meta files</echo>
                                <copy todir="${project.build.directory}/spring-meta" preservelastmodified="true">
                                    <fileset dir="${project.basedir}/src/main/resources" />
                                </copy>
                                <replace file="${project.build.directory}/spring-meta/META-INF/spring.handlers" token="$${camel.schema.version}" value="${camel.schema.version}" preservelastmodified="true" />
                                <replace file="${project.build.directory}/spring-meta/META-INF/spring.schemas" token="$${camel.schema.version}" value="${camel.schema.version}" preservelastmodified="true" />
                                <replace file="${project.build.directory}/spring-meta/META-INF/spring.schemas" token="$${camel.version}" value="${project.version}" preservelastmodified="true" />
                                <copy todir="${project.build.directory}/classes" preservelastmodified="true">
                                    <fileset dir="${project.build.directory}/spring-meta" />
                                </copy>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>Create JAR for test</id>
                        <phase>process-test-classes</phase>
                        <configuration>
                            <target>
                                <echo>Create some jars for testing</echo>
                                <jar destfile="${project.build.directory}/test-classes/package+scan+test.jar" update="true">
                                    <fileset dir="${project.build.directory}/test-classes/" includes="**/Test.class" />
                                </jar>
                                <copy file="${project.build.directory}/test-classes/package+scan+test.jar" tofile="${project.build.directory}/test-classes/package_scan_test.jar" />
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>init-camel-schema-version-property-from-file</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>target/camel.osgi.version.txt</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-artifacts</id>
                        <phase>package</phase>
                        <goals>
                            <goal>attach-artifact</goal>
                        </goals>
                        <configuration>
                            <artifacts>
                                <artifact>
                                    <file>${project.build.directory}/classes/camel-spring.xsd</file>
                                    <type>xsd</type>
                                </artifact>
                            </artifacts>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- generate sources JAR by default as this is needed by camel-blueprint -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.camel</groupId>
                <artifactId>camel-eip-documentation-enricher-maven-plugin</artifactId>
                <version>${project.version}</version>
                <executions>
                    <execution>
                        <id>eip-documentation-enricher</id>
                        <!-- need to run earlier so we use the process-test-resources phase -->
                        <phase>process-test-resources</phase>
                        <goals>
                            <goal>eip-documentation-enricher</goal>
                        </goals>
                        <configuration>
                            <inputCamelSchemaFile>${project.build.directory}/schema/schema1.xsd</inputCamelSchemaFile>
                            <outputCamelSchemaFile>${project.build.directory}/classes/camel-spring.xsd
                            </outputCamelSchemaFile>
                            <deleteFilesAfterRun>
                                ${project.build.directory}/schema/schema1.xsd,${project.build.directory}/schema/schema2.xsd
                            </deleteFilesAfterRun>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <links>
                        <link>http://download.oracle.com/javase/7/docs/api/</link>
                        <link>http://download.oracle.com/javaee/7/api/</link>
                        <link>http://static.springsource.org/spring/docs/${spring-version}/javadoc-api/</link>
                        <link>http://javadoc.io/doc/org.apache.camel/camel-core-model/latest/</link>
                        <link>http://javadoc.io/doc/org.apache.camel/camel-core-engine/latest/</link>
                    </links>
                    <linksource>true</linksource>
                    <maxmemory>256m</maxmemory>
                    <isOffline>${camel.javadoc.offline}</isOffline>

                    <groups>
                        <group>
                            <title>Camel Spring classes</title>
                            <packages>org.apache.camel.spring</packages>
                        </group>
                        <group>
                            <title>Camel Components</title>
                            <packages>org.apache.camel.component:org.apache.camel.component.*</packages>
                        </group>
                        <group>
                            <title>Camel Languages</title>
                            <packages>org.apache.camel.language:org.apache.camel.language.*</packages>
                        </group>
                        <group>
                            <title>Camel SPI implementations for Spring</title>
                            <packages>org.apache.camel.spring.spi</packages>
                        </group>
                        <group>
                            <title>Camel Spring Scheduler Polling Consumer support</title>
                            <packages>org.apache.camel.spring.pollingconsumer</packages>
                        </group>
                        <group>
                            <title>Camel Spring Idempotent Repository</title>
                            <packages>org.apache.camel.spring.processor.idempotent</packages>
                        </group>
                        <group>
                            <title>Spring XML DSL</title>
                            <packages>org.apache.camel.spring.xml.handler</packages>
                        </group>
                        <group>
                            <title>Utility classes</title>
                            <packages>org.apache.camel.spring.util</packages>
                        </group>
                    </groups>
                </configuration>
            </plugin>
        </plugins>
    </reporting>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>package</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <links>
                                <link>http://download.oracle.com/javase/7/docs/api/</link>
                                <link>http://download.oracle.com/javaee/7/api/</link>
                                <link>http://static.springsource.org/spring/docs/${spring-version}/javadoc-api/</link>
                            </links>
                            <isOffline>${camel.javadoc.offline}</isOffline>
                            <stylesheetfile>${basedir}/../../etc/css/stylesheet.css</stylesheetfile>
                            <linksource>true</linksource>
                            <source>${jdk.version}</source>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
