<!--
  ~ 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/unpack/unpack-exception/target</outputDirectory>
          <finalName>unpack-min</finalName>
          <workDirectory>${basedir}/target/test-harness/unpack/unpack-exception/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.AssemblyMavenProjectStub" />
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>