Как передать javac несколько аргументов командной строки, некоторые из которых включают двоеточие, не нарушая плагин релиза Maven?

Я хочу, чтобы моя сборка Maven не удалась, когда я забыл объявить serialVersionUID вSerializable учебный класс. Сjavacэто легко:

$ javac -Xlint:serial -Werror Source.java

Непосредственный перевод этого в Maven не работает:

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

compilerArgument цитируется, такjavac получает только один аргумент, содержащий-Xlint:serial -Werror, вместо-Xlint:serial а также-Werror в качестве отдельных аргументов. Итак, вы читаете документы и находитеcompilerArguments:

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

Это выглядит странно - толстая кишка делаетserial элемент вXlint пространство имен, которое нигде не объявлено, но работает ... пока вы не захотите сделать релиз:

$ 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.

По-видимому, обычный читатель POM обрабатывает пространства имен XML не так, как используемый плагином релиза.

Так как мне пройтиjavac несколько параметров командной строки, когда некоторые из этих параметров содержат символы, которые недопустимы для простых элементов XML, не нарушая плагин выпуска?

Ответы на вопрос(4)

Ваш ответ на вопрос