Jak przekazać wiele argumentów wiersza polecenia javac, z których niektóre obejmują dwukropek, bez łamania wtyczki wydania Maven?

Chcę, aby moja kompilacja Maven nie powiodła się, gdy zapomnę zadeklarować serialVersionUID w aSerializable klasa. Zjavac, to łatwe:

$ javac -Xlint:serial -Werror Source.java

Bezpośrednie tłumaczenie tego na Maven nie działa:

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

ThecompilerArgument jest cytowany, takjavac otrzymuje tylko jeden argument zawierający-Xlint:serial -Werror, zamiast-Xlint:serial i-Werror jako oddzielne argumenty. Więc czytasz dokumenty i znajdź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>

To wygląda dziwnie - robi dwukropekserial element wXlint przestrzeń nazw, która nie jest nigdzie zadeklarowana - ale działa ... dopóki nie chcesz zrobić wydania:

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

Najwyraźniej zwykły czytnik POM obsługuje przestrzenie nazw XML w inny sposób niż ten używany przez wtyczkę wydania.

Więc jak mam przejśćjavac wiele przełączników wiersza polecenia, gdy niektóre z tych przełączników zawierają znaki, które nie są poprawne dla zwykłych elementów XML, bez zrywania wtyczki wydania?

questionAnswers(4)

yourAnswerToTheQuestion