Chcę, aby moja kompilacja Mavena zawiodła, gdy zapomniałem zadeklarować serialVersionUID w klasie Serializable
. Z javac
, to proste:Jak przekazać javac wiele argumentów wiersza polecenia, z których niektóre zawierają dwukropek, bez łamania plugin wydania Maven?
$ javac -Xlint:serial -Werror Source.java
Bezpośrednio tłumacząc, że do 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>
The compilerArgument
jest cytowany, tak javac
otrzymuje tylko jeden argument, zawierające -Xlint:serial -Werror
zamiast -Xlint:serial
i -Werror
jako oddzielne argumenty. Więc czytać dokumenty i znaleźć 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 - dwukropek sprawia serial
element w Xlint
nazw, które nie są zgłaszane w dowolnym miejscu - ale to działa ... aż chce się zrobić prasowa:
$ 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żyty przez wtyczkę wydania.
W jaki sposób mogę przekazać javac
wielu 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 zerwania wtyczki wydania?
nie działa dla maven-compiler-plugin 2.4 – yegor256
To interesujące. Czy to błąd, czy zamierzona zmiana w zachowaniu? – gustafc
zobacz [MCOMPILER-62] (http://jira.codehaus.org/browse/MCOMPILER-62) – yegor256