<!--
  ~ Copyright 2001-2006 The Apache Software Foundation.
  ~
  ~ Licensed 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>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <outputDirectory>${basedir}/target/test-harness/attached/depSet/target</outputDirectory>
          <finalName>assembly</finalName>
          <workDirectory>${basedir}/target/test-harness/attached/depSet/work</workDirectory>
          <archiverManager implementation="org.apache.maven.plugin.assembly.stubs.ArchiverManagerStub" />
          <localRepository>${localRepository}</localRepository>
          <reactorProjects></reactorProjects>
          <classifier></classifier>
          <project implementation="org.apache.maven.plugin.assembly.stubs.MavenProjectWithArtifactsStub" />
          <descriptorRefs>
            <descriptorRef>dependencySet-default</descriptorRef>
          </descriptorRefs>
          <tarLongFileMode>warn</tarLongFileMode>
          <basedir>${basedir}</basedir>
          <tempRoot>${basedir}/target/test-harness/attached/depSet/archive-tmp</tempRoot>
          <siteDirectory>${basedir}/target/test-harness/attached/depSet/site</siteDirectory>
          <includeSite>false</includeSite>
          <appendAssemblyId>true</appendAssemblyId>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
