| <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| |
| <modelVersion>4.0.0</modelVersion> |
| |
| <groupId>org.apache.juneau</groupId> |
| <artifactId>juneau</artifactId> |
| <version>10.0.0-SNAPSHOT</version> |
| <packaging>pom</packaging> |
| <name>Apache Juneau</name> |
| <description>Apache Juneau</description> |
| |
| <parent> |
| <groupId>org.apache</groupId> |
| <artifactId>apache</artifactId> |
| <version>37</version> |
| </parent> |
| |
| <properties> |
| <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| <maven.compiler.source>17</maven.compiler.source> |
| <maven.compiler.target>17</maven.compiler.target> |
| <maven.compiler.release>17</maven.compiler.release> |
| |
| <!-- Configure checksum algorithms: MD5, SHA-1, and SHA-512 --> |
| <aether.checksums.algorithms>MD5,SHA-1,SHA-512</aether.checksums.algorithms> |
| |
| <juneau.compare.version>9.0.1</juneau.compare.version> |
| <junit.version>6.0.3</junit.version> |
| <javadoc.plugin.version>3.11.3</javadoc.plugin.version> |
| <jacoco.plugin.version>0.8.15</jacoco.plugin.version> |
| <jetty.version>12.1.9</jetty.version> |
| <jetty.ee.version>11</jetty.ee.version> |
| <tomcat.version>11.0.21</tomcat.version> |
| <spring.version>4.0.6</spring.version> |
| <sonar.organization>apache</sonar.organization> |
| <!-- javadoc.css uses custom HTML element selectors (ja, jc, jd, ...) for Javadoc syntax highlighting; css:S4670 false positives. --> |
| <sonar.issue.ignore.multicriteria>e1,e2</sonar.issue.ignore.multicriteria> |
| <sonar.issue.ignore.multicriteria.e1.ruleKey>css:S4670</sonar.issue.ignore.multicriteria.e1.ruleKey> |
| <sonar.issue.ignore.multicriteria.e1.resourceKey>**/javadoc.css</sonar.issue.ignore.multicriteria.e1.resourceKey> |
| <!-- HTTP-status response/exception beans (BasicHttpResponse/BasicHttpException CRTP+immutability hierarchy, TODO-273) are intentionally >5 ancestors deep; not a design smell to flatten. --> |
| <sonar.issue.ignore.multicriteria.e2.ruleKey>java:S110</sonar.issue.ignore.multicriteria.e2.ruleKey> |
| <sonar.issue.ignore.multicriteria.e2.resourceKey>**/http/response/**</sonar.issue.ignore.multicriteria.e2.resourceKey> |
| <!-- Coverage/exclusion config for the SonarScanner-for-Maven (used by CI in .github/workflows/sonarcloud.yml). --> |
| <!-- The Maven scanner reads these from the POM and ignores sonar-project.properties. --> |
| <!-- Aggregate report (cross-module integration-test coverage) via reactor-root path, per-module report via basedir fallback. --> |
| <sonar.coverage.jacoco.xmlReportPaths>${maven.multiModuleProjectDirectory}/juneau-integration-tests/target/site/jacoco-aggregate/jacoco.xml,${project.basedir}/target/site/jacoco/jacoco.xml</sonar.coverage.jacoco.xmlReportPaths> |
| <sonar.exclusions>**/target/**,**/doc/**,**/examples/**,**/src/main/resources/**,**/src/test/resources/**,**/generated/**,**/build/**</sonar.exclusions> |
| <!-- Exclude by-design parallel families from copy-paste detection (near-verbatim clones by design, not debt). Unique classes keep full CPD coverage. --> |
| <!-- 1) rest-server @RestX annotations + companion *Annotation impls (one per HTTP verb / lifecycle hook). --> |
| <!-- 2) marshaller facades (one thin Serializer+Parser pairing per format) under marshall/marshaller and marshall/jena/marshaller. --> |
| <!-- 3) RDF (jena) serializer/parser/session families - parallel RDF-format bindings mirroring the core marshall framework. --> |
| <!-- 4) generated-style annotation builders (Items/SubItems/Marshalled/MarshalledProp/RdfConfig) and their @Items/@SubItems interfaces. --> |
| <!-- 5) format-mirrored tokenizers, binary serializer sessions, schema serializers, csv/url-encoding serializer-parser pairs, JsonList/JsonMap. --> |
| <!-- 6) rest-server group/admin/health resource-servlet-mixin flavors, classic *BeanMeta, and parallel OAuth flow impls. --> |
| <sonar.cpd.exclusions>**/rest/server/Rest*Annotation.java,**/rest/server/RestOp.java,**/rest/server/RestGet.java,**/rest/server/RestPut.java,**/rest/server/RestPost.java,**/rest/server/RestDelete.java,**/rest/server/RestPatch.java,**/rest/server/RestOptions.java,**/rest/server/RestPreCall.java,**/rest/server/RestPostCall.java,**/rest/server/RestStartCall.java,**/rest/server/RestEndCall.java,**/rest/server/RestInit.java,**/rest/server/RestDestroy.java,**/rest/server/RestPostInit.java,**/marshall/marshaller/*.java,**/marshall/jena/marshaller/*.java,**/marshall/jena/Rdf*Serializer*.java,**/marshall/jena/Rdf*Parser*.java,**/marshall/ItemsAnnotation.java,**/marshall/SubItemsAnnotation.java,**/marshall/MarshalledAnnotation.java,**/marshall/MarshalledPropAnnotation.java,**/marshall/jena/RdfConfigAnnotation.java,**/commons/Items.java,**/commons/SubItems.java,**/marshall/MarshalledProp.java,**/marshall/hjson/HjsonTokenizer.java,**/marshall/hocon/HoconTokenizer.java,**/marshall/msgpack/MsgPackSerializerSession.java,**/marshall/cbor/CborSerializerSession.java,**/marshall/html/HtmlSchema*Serializer.java,**/marshall/json/JsonSchemaSerializer.java,**/marshall/csv/CsvSerializer.java,**/marshall/csv/CsvParser.java,**/marshall/urlencoding/UrlEncodingParser.java,**/marshall/html/HtmlClassMeta.java,**/marshall/collections/JsonList.java,**/marshall/collections/JsonMap.java,**/rest/server/servlet/BasicRest*Group.java,**/rest/server/ops/AdminResource.java,**/rest/server/ops/AdminServlet.java,**/rest/server/health/HealthResource.java,**/rest/server/health/HealthMixin.java,**/rest/server/health/HealthServlet.java,**/http/classic/header/HeaderBeanMeta.java,**/http/classic/part/PartBeanMeta.java,**/rest/server/auth/oauth/flow/OAuth*Flow.java</sonar.cpd.exclusions> |
| <sonar.coverage.exclusions>**/juneau-examples/**,**/juneau-petstore/**,**/*-microservice/**,**/juneau-sc-server/**,**/juneau-core/juneau-test-utils/**</sonar.coverage.exclusions> |
| <jena.version>5.6.0</jena.version> |
| <!-- Hoisted from owning modules so the juneau-bom + curated bundles can pin one coherent version source. --> |
| <micrometer.version>1.13.6</micrometer.version> |
| <opentelemetry.version>1.63.0</opentelemetry.version> |
| <jakarta.servlet-api.version>6.1.0</jakarta.servlet-api.version> |
| <jakarta.validation-api.version>3.0.2</jakarta.validation-api.version> |
| <logback.version>1.5.18</logback.version> |
| <log4j.version>2.24.3</log4j.version> |
| </properties> |
| |
| <modules> |
| <module>juneau-bom</module> |
| <module>juneau-bundles</module> |
| <module>juneau-core</module> |
| <module>juneau-rest</module> |
| <module>juneau-microservice</module> |
| <module>juneau-sc</module> |
| <module>juneau-examples</module> |
| <module>juneau-petstore</module> |
| <module>juneau-integration-tests</module> |
| <module>juneau-bean</module> |
| <module>juneau-shaded</module> |
| <module>juneau-distrib</module> |
| </modules> |
| |
| <distributionManagement> |
| <site> |
| <id>${project.artifactId}-site</id> |
| <url>file:///tmp/site</url> |
| </site> |
| </distributionManagement> |
| |
| <build> |
| <defaultGoal>clean verify</defaultGoal> |
| <plugins> |
| <plugin> |
| <groupId>org.jacoco</groupId> |
| <artifactId>jacoco-maven-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>prepare-agent</id> |
| <goals> |
| <goal>prepare-agent</goal> |
| </goals> |
| </execution> |
| <execution> |
| <id>report</id> |
| <phase>test</phase> |
| <goals> |
| <goal>report</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| <plugin> |
| <artifactId>maven-enforcer-plugin</artifactId> |
| <executions> |
| <execution> |
| <id>enforce-maven</id> |
| <goals> |
| <goal>enforce</goal> |
| </goals> |
| <configuration> |
| <rules> |
| <requireMavenVersion> |
| <version>3.6.3</version> |
| </requireMavenVersion> |
| </rules> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| |
| <!-- |
| Runs Apache Rat against all source code to make sure all files have licenses. |
| --> |
| <plugin> |
| <groupId>org.apache.rat</groupId> |
| <artifactId>apache-rat-plugin</artifactId> |
| <!-- |
| ! Can be removed if updated to asf parent version 19. |
| --> |
| <configuration> |
| <excludes> |
| <exclude>**/DEPENDENCIES</exclude> |
| <exclude>**/target/**</exclude> |
| <exclude>**/empty.txt</exclude> |
| <exclude>**/TODO.txt</exclude> |
| <exclude>**/*.md</exclude> |
| <exclude>**/*.svg</exclude> |
| <exclude>**/*.nojekyll</exclude> |
| <exclude>/docs/static/site/**</exclude> |
| <exclude>**/javadocs/**</exclude> |
| |
| <!-- Eclipse metadata files --> |
| <exclude>**/.settings/**</exclude> |
| <exclude>**/.project</exclude> |
| <exclude>**/.classpath</exclude> |
| <exclude>**/*.launch</exclude> |
| <exclude>**/*.prefs</exclude> |
| |
| <exclude>**/*.gitattributes</exclude> |
| |
| <!-- Overlay files --> |
| <exclude>**/*.2</exclude> |
| |
| <!-- Generated by embedded jetty server --> |
| <exclude>**/jetty.out.xml</exclude> |
| <exclude>**/*.log</exclude> |
| <exclude>**/*.log.*</exclude> |
| |
| <!-- Generated in juneau-microservice-template for some reason --> |
| <exclude>**/dependency-reduced-pom.xml</exclude> |
| |
| <!-- Generated by docs --> |
| <exclude>**/docs.txt</exclude> |
| <exclude>**/toc.txt</exclude> |
| |
| <!-- Files needed by Heroku as-is --> |
| <exclude>**/app.json</exclude> |
| <exclude>**/Procfile</exclude> |
| |
| <exclude>**/.asf.yaml</exclude> |
| |
| <!-- ServiceLoader provider files - plain text, no comment syntax for license headers --> |
| <exclude>**/META-INF/services/**</exclude> |
| |
| <!-- OpenRewrite recipe files - YAML has no comment syntax for ASF license headers --> |
| <exclude>**/META-INF/rewrite/**</exclude> |
| <exclude>rewrite.yml</exclude> |
| |
| <!-- Performance baseline data file - plain text metrics, no license header syntax --> |
| <exclude>**/perf-baseline.txt</exclude> |
| <exclude>**/test-run-history.tsv</exclude> |
| |
| <!-- JMH micro-benchmark output directory - generated result data + .gitkeep placeholder, no license header syntax --> |
| <exclude>**/jmh-results/**</exclude> |
| </excludes> |
| <consoleOutput>true</consoleOutput> |
| <!-- Note: useEclipseDefaultExcludes does not work for subprojects. See RAT-107 --> |
| </configuration> |
| <executions> |
| <execution> |
| <phase>verify</phase> |
| <goals> |
| <goal>check</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| |
| </plugins> |
| |
| <pluginManagement> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <version>3.12.0</version> |
| <configuration> |
| <skip>false</skip> |
| <release>${maven.compiler.target}</release> |
| <sourcetab>3</sourcetab> |
| <verbose>true</verbose> |
| <additionalJOptions> |
| <additionalJOption>--allow-script-in-comments</additionalJOption> |
| <additionalJOption>-Xdoclint:none</additionalJOption> |
| <additionalJOption>-header</additionalJOption> |
| <additionalJOption><a href="http://juneau.apache.org" target="_blank"><img src="/img/oakleaf.svg" alt="Apache Juneau" style="height:20px; vertical-align:middle; margin-right:5px;">Apache Juneau</a></additionalJOption> |
| </additionalJOptions> |
| <additionalOptions> |
| <additionalOption>-quiet</additionalOption> |
| </additionalOptions> |
| <show>protected</show> |
| <windowtitle>Apache Juneau ${project.version}</windowtitle> |
| <author>true</author> |
| <linksource>true</linksource> |
| |
| <use>true</use> |
| <notree>false</notree> |
| <noindex>false</noindex> |
| <nooverview>false</nooverview> |
| <nohelp>false</nohelp> |
| <nodeprecatedlist>false</nodeprecatedlist> |
| |
| <doctitle>Apache Juneau ${project.version} API</doctitle> |
| <stylesheetfile>${maven.multiModuleProjectDirectory}/docs/src/javadoc/javadoc.css</stylesheetfile> |
| <overview>${maven.multiModuleProjectDirectory}/docs/src/javadoc/overview.html</overview> |
| <excludePackageNames>*proto*:*test*:*internal*</excludePackageNames> |
| <links> |
| <link>https://docs.oracle.com/en/java/javase/${maven.compiler.target}/docs/api/</link> |
| <link>https://jakarta.ee/specifications/platform/8/apidocs/</link> |
| <link>https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/</link> |
| <link>https://hc.apache.org/httpcomponents-core-4.4.x/current/httpcore/apidocs/</link> |
| </links> |
| <failOnError>false</failOnError> |
| </configuration> |
| </plugin> |
| <plugin> |
| <artifactId>maven-compiler-plugin</artifactId> |
| <version>3.15.0</version> |
| <configuration> |
| <source>${maven.compiler.source}</source> |
| <target>${maven.compiler.target}</target> |
| <!--compilerArgument>-parameters</compilerArgument> |
| <testCompilerArgument>-parameters</testCompilerArgument--> |
| </configuration> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.apache.felix</groupId> |
| <artifactId>maven-bundle-plugin</artifactId> |
| <version>6.0.2</version> |
| </plugin> |
| |
| <!-- |
| Quiet-by-default test logging, applied reactor-wide to every module's Surefire run. |
| Both properties point at a single shared config file at the reactor root, so there is |
| exactly one source of truth (no per-module copies to drift apart): |
| - Logback (logback.configurationFile): root level=WARN - genuine WARN/ERROR still print, |
| only INFO startup chatter is removed. |
| - JUL (java.util.logging.config.file): ConsoleHandler=WARNING (never OFF), so real |
| WARNING/SEVERE still surface. |
| Modules that define their own surefire <systemPropertyVariables> (e.g. java.locale.providers) |
| merge with these; module-level keys win on conflict. See src/test/resources/. |
| |
| Deliberately does NOT set <excludedGroups>, nor define an "excludedGroups" property, anywhere |
| in this root pom: Surefire's excludedGroups mojo parameter is bound to a property of the |
| same name (so -DexcludedGroups=... works with zero pom.xml wiring), which means merely |
| declaring an "excludedGroups" property in <properties> - even with no <configuration> use - |
| would feed every module's Surefire execution reactor-wide via inheritance. Surefire hard- |
| fails a module with "groups/excludedGroups require TestNG, JUnit48+ or JUnit 5" as soon as |
| that parameter is non-null, even when it resolves to an empty string - and several modules |
| (e.g. juneau-rest-server-rdf) have no JUnit5 engine on their test classpath. Only the |
| modules that actually contain @Tag("manual") tests (currently juneau-marshall and |
| juneau-integration-tests) declare their own local "excludedGroups" property (default |
| "manual", still overridable via -DexcludedGroups=) and wire it into their own Surefire |
| config, since only those modules are guaranteed to have the JUnit5 engine present. |
| --> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-surefire-plugin</artifactId> |
| <configuration> |
| <systemPropertyVariables> |
| <logback.configurationFile>${maven.multiModuleProjectDirectory}/src/test/resources/logback-test.xml</logback.configurationFile> |
| <java.util.logging.config.file>${maven.multiModuleProjectDirectory}/src/test/resources/logging.properties</java.util.logging.config.file> |
| <!-- Embedded Jetty logs through its own jetty-slf4j-impl StdErrLog (not logback/JUL), |
| so raise its root threshold to WARN to silence server startup/stop INFO chatter. --> |
| <org.eclipse.jetty.LEVEL>WARN</org.eclipse.jetty.LEVEL> |
| <!-- Spring Boot reinitializes its own logging on context start, overriding the logback |
| config file; set its root level to WARN so embedded Tomcat/Spring startup INFO is |
| suppressed while real WARN/ERROR still prints. --> |
| <logging.level.root>WARN</logging.level.root> |
| </systemPropertyVariables> |
| </configuration> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.jacoco</groupId> |
| <artifactId>jacoco-maven-plugin</artifactId> |
| <version>${jacoco.plugin.version}</version> |
| <executions> |
| <execution> |
| <id>prepare-agent</id> |
| <goals> |
| <goal>prepare-agent</goal> |
| </goals> |
| </execution> |
| <execution> |
| <id>report</id> |
| <phase>test</phase> |
| <goals> |
| <goal>report</goal> |
| </goals> |
| </execution> |
| </executions> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.sonarsource.scanner.maven</groupId> |
| <artifactId>sonar-maven-plugin</artifactId> |
| <version>5.7.0.6970</version> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-shade-plugin</artifactId> |
| <!-- Same version as org.apache:apache:30 for now --> |
| <version>3.6.2</version> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-source-plugin</artifactId> |
| <!-- version > 3.3.0 suffers from https://issues.apache.org/jira/browse/MSOURCES-143 --> |
| <version>3.4.0</version> |
| <configuration> |
| <excludes> |
| <exclude>scripts/**</exclude> |
| </excludes> |
| </configuration> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-release-plugin</artifactId> |
| <configuration> |
| <arguments>-Daether.checksums.algorithms=MD5,SHA-1,SHA-512</arguments> |
| </configuration> |
| </plugin> |
| |
| <plugin> |
| <groupId>org.openrewrite.maven</groupId> |
| <artifactId>rewrite-maven-plugin</artifactId> |
| <version>5.42.0</version> |
| <configuration> |
| <activeRecipes/> |
| <exportDatatables>false</exportDatatables> |
| </configuration> |
| <dependencies> |
| <dependency> |
| <groupId>org.openrewrite</groupId> |
| <artifactId>rewrite-java</artifactId> |
| <version>8.38.0</version> |
| </dependency> |
| <dependency> |
| <groupId>org.openrewrite</groupId> |
| <artifactId>rewrite-java-17</artifactId> |
| <version>8.38.0</version> |
| </dependency> |
| </dependencies> |
| </plugin> |
| |
| </plugins> |
| </pluginManagement> |
| </build> |
| |
| <reporting> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-javadoc-plugin</artifactId> |
| <reportSets> |
| <reportSet> |
| <reports> |
| <report>aggregate</report> |
| </reports> |
| </reportSet> |
| </reportSets> |
| <configuration> |
| <skip>false</skip> |
| <failOnError>false</failOnError> |
| <detectJavaApiLink>false</detectJavaApiLink> |
| <additionalOptions> |
| <additionalOption>-quiet</additionalOption> |
| </additionalOptions> |
| </configuration> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-jxr-plugin</artifactId> |
| <version>3.6.0</version> |
| </plugin> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-surefire-report-plugin</artifactId> |
| <configuration> |
| <aggregate>true</aggregate> |
| </configuration> |
| </plugin> |
| <!-- JaCoCo aggregate report is generated in juneau-integration-tests module --> |
| </plugins> |
| </reporting> |
| |
| <url>https://juneau.apache.org/</url> |
| <!-- |
| Inherited from parent pom |
| <organization> |
| <name>The Apache Software Foundation</name> |
| <url>https://www.apache.org/</url> |
| </organization> |
| --> |
| <inceptionYear>2016</inceptionYear> |
| |
| <scm> |
| <connection>scm:git:https://gitbox.apache.org/repos/asf/juneau.git</connection> |
| <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/juneau.git</developerConnection> |
| <url>https://github.com/apache/juneau</url> |
| <tag>juneau-9.2.0-RC3</tag> |
| </scm> |
| <issueManagement> |
| <system>Jira</system> |
| <url>https://issues.apache.org/jira/browse/JUNEAU</url> |
| </issueManagement> |
| <mailingLists> |
| <mailingList> |
| <name>Apache Juneau Developers</name> |
| <post>dev@juneau.apache.org</post> |
| <subscribe>list-subscribe@juneau.apache.org</subscribe> |
| <unsubscribe>list-unsubscribe@juneau.apache.org</unsubscribe> |
| <archive>https://lists.apache.org/list.html?dev@juneau.apache.org</archive> |
| </mailingList> |
| </mailingLists> |
| <developers> |
| <developer> |
| <id>johnadament</id> |
| <name>John D. Ament</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>sblackmon</id> |
| <name>Steve Blackmon</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>clr</id> |
| <name>Craig L Russell</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>stain</id> |
| <name>Stian Soiland-Reyes</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>jochen</id> |
| <name>Jochen Wiedmann</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>jamesbognar</id> |
| <name>James Bognar</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>dmg</id> |
| <name>David M Goddard</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>phaumer</id> |
| <name>Peter Haumer</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>yidonguk</id> |
| <name>Raphi D Lee</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>shalithasuranga</id> |
| <name>Shalitha Suranga</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>marcelosouzav</id> |
| <name>Marcelo Vieira</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| <developer> |
| <id>akayeshmantha</id> |
| <name>Ayeshmantha Perera</name> |
| <roles><role>PMC</role></roles> |
| </developer> |
| </developers> |
| |
| </project> |