<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!--
  NOTE: The coordinates of this test POM must match the coordinates of the test plugin, i.e. just like this
  project would build the plugin.
  -->
  <groupId>org.apache.maven.its.mng4269</groupId>
  <artifactId>maven-mng4269-plugin</artifactId>
  <version>0.1</version>
  <packaging>maven-plugin</packaging>

  <name>Maven Integration Test :: MNG-4269</name>
  <description>
    Test that dependency resolution from the reactor is not too eager and does not resolve plugin artifacts from
    the build directory of their plugin project when the plugin project hasn't been built yet. The technical
    problem is that the mere existence of a project output directory like target/classes is no sufficient indicator
    that we can use that for artifact resolution. The project's output directory might just be a left over from a
    previous build and could be in any state, e.g. incomplete.
  </description>
</project>
