<?xml version="1.0" encoding="UTF-8"?>

<!-- Generated by maven-plugin-tools 3.6 -->

<plugin>
  <name>tycho-custom-bundle-plugin</name>
  <description>Additional tools for Tycho</description>
  <groupId>org.eclipse.tycho.extras</groupId>
  <artifactId>tycho-custom-bundle-plugin</artifactId>
  <version>1.5.1-SNAPSHOT</version>
  <goalPrefix>tycho-custom-bundle</goalPrefix>
  <mojos>
    <mojo>
      <goal>custom-bundle</goal>
      <description>Builds OSGi bundle</description>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <implementation>org.eclipse.tycho.extras.custombundle.CustomBundleMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <threadSafe>false</threadSafe>
      <parameters>
        <parameter>
          <name>archive</name>
          <type>org.apache.maven.archiver.MavenArchiveConfiguration</type>
          <required>false</required>
          <editable>true</editable>
          <description></description>
        </parameter>
        <parameter>
          <name>bundleLocation</name>
          <type>java.io.File</type>
          <required>true</required>
          <editable>true</editable>
          <description>Location of OSGi bundle, must have META-INF/MANIFEST.MF bundle manifest file.</description>
        </parameter>
        <parameter>
          <name>classifier</name>
          <type>java.lang.String</type>
          <required>true</required>
          <editable>true</editable>
          <description>Classifier of attached artifact.</description>
        </parameter>
        <parameter>
          <name>excludes</name>
          <type>java.lang.String[]</type>
          <required>false</required>
          <editable>true</editable>
          <description>File patterns to exclude from bundleLocation.</description>
        </parameter>
        <parameter>
          <name>fileSets</name>
          <type>java.util.List</type>
          <required>true</required>
          <editable>true</editable>
          <description>Additional files to be included in the generated bundle.</description>
        </parameter>
        <parameter>
          <name>includes</name>
          <type>java.lang.String[]</type>
          <required>false</required>
          <editable>true</editable>
          <description>File patterns to include from bundleLocation. Include everything by default.</description>
        </parameter>
        <parameter>
          <name>project</name>
          <type>org.apache.maven.project.MavenProject</type>
          <required>false</required>
          <editable>true</editable>
          <description></description>
        </parameter>
      </parameters>
      <configuration>
        <project implementation="org.apache.maven.project.MavenProject">${project}</project>
      </configuration>
    </mojo>
  </mojos>
</plugin>