<?xml version="1.0"?>

<!--
  ~ Copyright 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.
  -->

<component-set>
  <components>
    <component>
      <role>org.apache.maven.plugin.assembly.repository.RepositoryAssembler</role>
      <implementation>org.apache.maven.plugin.assembly.repository.DefaultRepositoryAssembler</implementation>
      <requirements>
        <requirement>
          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
          <field-name>artifactFactory</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
          <field-name>artifactResolver</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role>
          <field-name>repositoryLayout</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
          <field-name>artifactRepositoryFactory</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
          <role-hint>maven</role-hint>
          <field-name>metadataSource</field-name>
        </requirement>
        <requirement>
          <role>org.apache.maven.project.MavenProjectBuilder</role>
          <field-name>projectBuilder</field-name>
        </requirement>
      </requirements>
    </component>
  </components>
</component-set>
