#maven #maven-plugin #documentation-generation
#maven #maven-плагин #документация-генерация
Вопрос:
Я пишу плагин maven и хотел бы добавить некоторую документацию для доступных целей и параметров.
Когда я запускаю mvn help:describe -Dplugin=myplugin -Ddetail
, он выводит доступные цели и параметры. Однако он перечисляет (без описания) везде. Из поиска в Интернете я не смог выяснить, где такое описание должно быть установлено.
Для справки, мой плагин написан на scala и выглядит примерно так.
import org.apache.maven.plugins.annotations.{ Component, Parameter }
class MyMojo extends AbstractMojo {
@Parameter(defaultValue = "false", readonly = false)
private var skipFormatting: Boolean = _
}
Итак, мой вопрос был бы таков: где можно установить описание, такое, чтобы оно отображалось с mvn help:describe -Dplugin=myplugin
?
Ответ №1:
Я настоятельно рекомендую использовать следующее:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>default-descriptor</id>
<phase>process-classes</phase>
</execution>
<execution>
<id>generate-helpmojo</id>
<goals>
<goal>helpmojo</goal>
</goals>
</execution>
</executions>
</plugin>
который будет генерировать справочную часть в процессе сборки. И да, вам нужно добавить некоторый javadoc, подобный этому:
@Mojo(name = "failure", defaultPhase = LifecyclePhase.NONE,
requiresDependencyResolution = ResolutionScope.NONE, threadSafe = true)
public class FailureMojo extends AbstractMojo {
Я не понимаю, почему у вас нет никаких аннотаций к вашему Mojo?
Документация выглядит следующим образом:https://maven.apache.org/plugins/maven-install-plugin/plugin-info.html будут сгенерированы из javadoc для параметров и т.д. https://github.com/apache/maven-install-plugin/blob/master/src/main/java/org/apache/maven/plugins/install/InstallMojo.java#L69
Комментарии:
1. Спасибо, что, кажется, генерируется хоть какое-то описание для справки, но, увы, другого нет. Как вы заметили, в «Mojo», который объявляет параметры, отсутствует аннотация @Mojo. Это потому, что он сам по себе абстрактен и расширен только позже. Это может быть причиной, по которой maven не получает документ java. Вероятно, это все равно будет перенесено на java, может быть, тогда это сработает.
2. Почему бы не сделать это на обычном java? Кроме того, вопрос, какой класс не определен
public class ...
, и вы должны добавить аннотацию? Если сам класс будет использоваться для наследования, то у класса, от которого наследуется, должна быть аннотация?
Ответ №2:
Основываясь на примерах при запуске help:describe
на знакомых плагинах, таких как maven-jar-plugin
, похоже, что он основан на Javadoc класса Mojo.
Комментарии:
1. По крайней мере, для локальных снимков javadocs, похоже, не используются. Я попробую еще раз с полным выпуском.