Я пытался написать плагин maven с помощью аннотаций. Моя декларация плагин выглядит следующим образом:Устранение неполадок Плагин Maven для компиляции фазы
@Mojo(name = "compile", defaultPhase = LifecyclePhase.COMPILE, requiresProject = true, threadSafe = false)
public class CompileMojo extends AbstractMojo
И у меня есть это в файле пом, который компилирует плагин:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.2</version>
<configuration>
<!-- see http://jira.codehaus.org/browse/MNG-5346 --> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
</configuration>
<executions>
<execution>
<id>mojo-descriptor</id>
<goals>
<goal>descriptor</goal>
</goals>
</execution>
</executions>
</plugin>
Maven появляется, чтобы подтвердить, что плагин привязан к компиляции фазы:
mvn help:describe -DartifactId=jvmbasic-maven-plugin -DgroupId=com.khubla.jvmbasic -Dgoal=compile -Ddetail
[INFO] Mojo: 'jvmbasic:compile'
jvmbasic:compile
Description: jvmBASIC compiler
Implementation: com.khubla.jvmbasic.jvmbasicmojo.CompileMojo
Language: java
Bound to phase: compile
Available parameters:
sourceDir
where to find the sources
targetDir
target dir
verbose
verbose
Когда я призываю харизмы явно это работает:
mvn jvmbasic:compile
, и если я использую раздел исполнения в файле pom, он также работает. Тем не менее, я ожидал, что харизмы будет автоматически привязан к фазе компиляции, так, что если я напечатал
mvn clean compile
он будет автоматически работать. Мне что-то не хватает?
Фактический исходный код здесь:
https://github.com/teverett/jvmBASIC/tree/master/jvmbasicmojo
Кроме моего ответа я вижу несколько проблем с вашей Maven сборки (не определен кодирования). Примеры, которые используют плагин в том же реакторе без правильного определения зависимостей с плагином. Без ручного редактирования, не пригодного для сборки из коробки. Сгенерированные классы являются частью src/main/java (классы, сгенерированные ANTLR). Проблема в том, что вы не используете настоящую многомодульную сборку. – khmarbaise
Я взглянул на ваши изменения и проверил их. Спасибо, большое спасибо. Однако, если мой тест вашего кода не был дефектным, исходная проблема все еще существует. Строка по-прежнему не вызывает jvmbasic: компилируется автоматически. –