配置插件描述符的生成

要配置插件描述符的生成,请将以下内容添加到项目的 POM 中:

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

goalPrefix参数将为描述符中指定的插件设置目标前缀。outputDirectory另一方面,该参数指定生成的插件描述符的目标位置。

例子

例如,如果我们参考Maven Archetype 插件生成的MyMojo来源maven-my-plugin,即:

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

生成的插件描述符mvn package应该是:

<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>