Configuring Generation of Plugin Descriptor

To configure the generation of the plugin descriptor, add the following to the project's POM:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-plugin-plugin</artifactId>
        <version>3.15.1</version>
        <configuration>
          <goalPrefix>plugin</goalPrefix>
          <outputDirectory>target/dir</outputDirectory>
        </configuration>
      </plugin>
    </plugins>
  ...
  </build>
  ...
</project>

The goalPrefix parameter will set the goal prefix for the plugin that is specified in the descriptor. The outputDirectory parameter, on the other hand, specifies the target ___location of the generated plugin descriptor.

Example

For instance, if we make reference on MyMojo from maven-my-plugin which is generated by the Maven Archetype Plugin, i.e.:

mvn archetype:create \
  -DgroupId=org.apache.maven.plugin.my \
  -DartifactId=maven-my-plugin \
  -DarchetypeArtifactId=maven-archetype-mojo

The plugin descriptor generated by mvn package should be:

<plugin>
  <description></description>
  <groupId>org.apache.maven.plugin.my</groupId>
  <artifactId>maven-my-plugin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <goalPrefix>my</goalPrefix>
  <isolatedRealm>false</isolatedRealm>
  <inheritedByDefault>true</inheritedByDefault>
  <mojos>
    <mojo>
      <goal>touch</goal>
      <description>Goal which touches a timestamp file.</description>
      <requiresDirectInvocation>false</requiresDirectInvocation>
      <requiresProject>true</requiresProject>
      <requiresReports>false</requiresReports>
      <aggregator>false</aggregator>
      <requiresOnline>false</requiresOnline>
      <inheritedByDefault>true</inheritedByDefault>
      <phase>process-sources</phase>
      <implementation>org.apache.maven.plugin.my.MyMojo</implementation>
      <language>java</language>
      <instantiationStrategy>per-lookup</instantiationStrategy>
      <executionStrategy>once-per-session</executionStrategy>
      <parameters>
        <parameter>
          <name>outputDirectory</name>
          <type>java.io.File</type>
          <required>true</required>
          <editable>true</editable>
          <description>Location of the file.</description>
        </parameter>
      </parameters>
      <configuration>
        <outputDirectory implementation="java.io.File">${project.build.directory}</outputDirectory>
      </configuration>
    </mojo>
  </mojos>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven</groupId>
      <artifactId>maven-plugin-api</artifactId>
      <type>jar</type>
      <version>2.0</version>
    </dependency>
  </dependencies>
</plugin>