27

Maven プラグインの開発中に、ビルドで次のエラーが出力されます。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.3:descriptor (default-descriptor) on project default-method-demo: Execution default-descriptor of goal org.apache.maven.plugins:maven-plugin-plugin:3.3:descriptor failed: syntax error @[8,1] in file:/full/path/to/project/default-method/src/main/java/org/example/Iface.java -> [Help 1]

ファイルIface.javaがコンパイル可能であっても。

Iface.java:

package org.example;

public interface Iface {
    default String getString() {
        return "string";
    }
}

からpom.xml

<packaging>maven-plugin</packaging>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.0.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.4</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

問題の原因は何ですか?どのように修正できますか?

4

1 に答える 1

53

問題は、maven-plugin-pluginプラグイン記述子の生成で、Java 8 インターフェースをデフォルトのメソッドで解析するのが困難だったことです。

で新しいプラグイン バージョンを明示的に指定することで修正できますpom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.4</version>
        </plugin>
        <!-- other plugins -->
    </plugins>
</build>

または、本体を実装クラスに移動して、デフォルトのメソッドを回避するだけです。

関連するバグ: MPLUGIN-272

于 2016-07-23T23:15:49.883 に答える