web-dev-qa-db-fra.com

maven-plugin-plugin: le but du descripteur échoue au et du fichier

Lors du développement d'un plugin maven, la build imprime l'erreur:

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

même si le fichier Iface.Java est compilable.

Iface.Java:

package org.example;

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

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

Qu'est-ce qui cause le problème? Comment le réparer?

23
czerny

Le problème est que maven-plugin-plugin la génération du descripteur de plugin a eu du mal à analyser Java 8 interfaces avec les méthodes par défaut.

Il peut être corrigé en indiquant explicitement la nouvelle version du plugin dans 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>

Ou tout simplement en évitant les méthodes par défaut en déplaçant leurs corps vers des classes d'implémentation.

Bogue associé: MPLUGIN-272

45
czerny