Wie übergebe ich Javac mehrere Befehlszeilenargumente, von denen einige Doppelpunkte enthalten, ohne das Maven-Release-Plugin zu beschädigen?

Ich möchte, dass mein Maven-Build fehlschlägt, wenn ich vergesse, serialVersionUIDs in a zu deklarierenSerializable Klasse. Mitjavac, das ist einfach:

$ javac -Xlint:serial -Werror Source.java

Das direkt in Maven zu übersetzen, funktioniert nicht:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <compilerArgument>-Xlint:serial -Werror</compilerArgument>
            </configuration>
        </plugin>

DascompilerArgument wird zitiert, sojavac erhält nur ein Argument, das enthält-Xlint:serial -Werror, anstatt-Xlint:serial und-Werror als separate Argumente. Also lest ihr die Dokumente und findetcompilerArguments:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <compilerArguments>
                    <Xlint:serial />
                    <Werror />
                </compilerArguments>
            </configuration>
        </plugin>

Das sieht komisch aus - der Doppelpunkt machtserial Element in derXlint Namespace, der nirgendwo deklariert ist - aber funktioniert ... bis Sie ein Release machen wollen:

$ mvn release:prepare

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project my-project: Error reading POM: Error on line 58: The prefix "Xlint" for element "Xlint:serial" is not bound.

Offensichtlich behandelt der reguläre POM-Reader XML-Namespaces anders als das Release-Plugin.

Also, wie komme ich vorbei?javac mehrere Befehlszeilenoptionen, wenn einige dieser Optionen Zeichen enthalten, die für einfache XML-Elemente nicht gültig sind, ohne das Release-Plugin zu beschädigen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage