2

注釈を使用して Maven プラグインを作成しようとしています。私のプラグイン宣言は次のようになります。

@Mojo(name = "compile", defaultPhase = LifecyclePhase.COMPILE, requiresProject = true,     threadSafe = false)
public class CompileMojo extends AbstractMojo

そして、プラグインをコンパイルするpomファイルにこれがあります:

<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ファイルで実行セクションを使用すると、それも機能します。ただし、mojo が自動的にコンパイル フェーズにバインドされることを期待していたので、

mvn clean compile

自動的に実行されます。明らかな何かが欠けていますか?

実際のソースコードは次のとおりです。

https://github.com/teverett/jvmBASIC/tree/master/jvmbasicmojo

4

3 に答える 3

1

Maven Plugin Tool for Annotations@Executeで説明されているように、注釈が欠落していると思います。

@Mojo(name="compile", defaultPhase = LifecyclePhase.COMPILE, 
      requiresProject = true, threadSafe = false)
@Execute(goal = "compile", phase = LifecyclePhase.COMPILE)
public class CompileMojo extends AbstractMojo
于 2014-02-04T12:59:09.260 に答える
0

コンパイル フェーズに自動的にバインドするプロジェクトの pom.xml はどこにありますか? プロジェクト pom のビルド セクションには、次のようなものが必要です。

<build>
    <plugins>
        <plugin>
        <artifactId>jvmbasic-maven-plugin</artifactId>
        <version>${jvmbasic.version}</version>
        <configuration>
           <sourceDir>${maven.compiler.source}</sourceDir>
           <targetDir>${maven.compiler.target}</targetDir>
        </configuration>

    </plugin>
于 2013-07-02T16:22:31.807 に答える