15 Stimmen

exec-maven-plugin exec:java schlägt fehl: Konfigurationswerte können einem Array vom Typ java.lang.String nicht zugewiesen werden

Bei der Ausführung von mvn exec:java können die Konfigurationsargumente nicht korrekt analysiert werden, so dass der folgende Fehler auftritt:

[ERROR] Ziel konnte nicht ausgeführt werden org.codehaus.mojo:exec-maven-plugin:1.2. Projekt autotest-programmes: Konfiguration von mojo konnte nicht geparst werden org.codehaus.mojo:exec-maven-plugin:1.2.1:java: Kann nicht zuweisen Konfigurationswerte nicht einem Array vom Typ java.lang.String zuordnen: [-classpath, Klassenpfad {}, --glue, com.company.test.cucumber, --format, pretty, --format, html: C:\workspace\autotest\target ] -> [Hilfe 1]

Dies ist die verwendete Plugin-Konfiguration (unter Verwendung von Apache Maven 3.0.3):

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
        <execution>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <includeProjectDependencies>false</includeProjectDependencies>
        <includePluginDependencies>true</includePluginDependencies>
        <executableDependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
        </executableDependency>
        <mainClass>cucumber.cli.Main</mainClass>
        <commandlineArgs>-Dfile.encoding=UTF-8</commandlineArgs>
        <arguments>
            <argument>-classpath</argument>
            <classpath/>
            <argument>--glue</argument>
            <argument>com.company.test.cucumber</argument>
            <argument>--format</argument>
            <argument>pretty</argument>
            <argument>--format</argument>
            <argument>html:${project.basedir}\target</argument>
        </arguments>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>1.0.2</version>
        </dependency>
    </dependencies>
</plugin>

12voto

khmarbaise Punkte 86559

Ich würde vorschlagen, dass Sie die leeren Einträge aus Ihrer Konfiguration entfernen und es erneut versuchen.

 <argument>-classpath</argument>
 <classpath/>

Weil im Java-Ziel der Klassenpfad nicht erlaubt ist, basierend auf dem Dokumentation .

BTW: Verwenden Sie niemals "\" in Ihrem Maven Pom. Verwenden Sie stattdessen Schrägstriche.

2voto

Alex Chernin Punkte 21

Nach Angaben von exec:java Docs hier müssen Sie:

entfernen <arguments> Teil

Und verwenden <additionalClasspathElements> Deklarationen, um einen Klassenpfad zu definieren.

1voto

Oliv Punkte 9469

Wenn Sie Folgendes verwenden möchten <classpath/> müssen Sie verwenden exec:exec und nicht exec:java . Sie müssen auch die ausführbare Datei hinzufügen, die lautet java in Ihrem Fall:

<executable>java</executable>

Wenn ich es richtig verstehe, exec:java fügt den Klassenpfad automatisch hinzu, Sie können ihn nicht überschreiben. Die Argumente werden nach der Hauptklasse hinzugefügt. exec:exec ist allgemeiner, es führt eine beliebige ausführbare Datei mit beliebigen Argumenten aus, von denen eines die <classpath/> .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X