<?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/3.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/3.0.0 http://maven.apache.org/maven-v3_0_0.xsd">
  <pomVersion>3</pomVersion>
  <id>maven-one-project</id>
  <name>Maven One Project</name>
  <currentVersion>1.0</currentVersion>
  <description>This is a Maven One Project used for testing. This has an invalid pom. Missing repository element.</description>
  <shortDescription>This is a sample Maven One Project.</shortDescription>
  <developers>
    <developer>
      <name>John Doe</name>
      <id>john</id>
      <email>john.doe@apache.org</email>
      <organization/>
      <roles>
        <role>Documentation</role>
        <role>Java Developer</role>
      </roles>
    </developer>
  </developers>
  <dependencies/>
</project>
