First entry into "Why Maven sucks" journal:

1. Warnings and deprecations are not shown by default.

2. Documentation shows use of <compilerArgument> with mulitple arguments in a
single element:

  <compilerArgument>-foo -bar</compilerArgument>

which is a bald-faced lie. Only a single argument is allowed inside a
<compilerArgument> element. Web search turns up "helpful" advice to use
multiple elements:

  <compilerArgument>-foo</compilerArgument>
  <compilerArgument>-bar</compilerArgument>

Fair enough, and also a bald-faced lie. After spending a bunch of time
debugging why my compiler arguments were not working, I discovered that Maven
was just (silently) using the last one and ignoring/overwriting all of the
previous arguments.

I had noticed while poring over the documentation that it was also possible to
use the so-called "Map version" (whatever that means), which uses this
completely fucking stupid syntax:

  <compilerArguments>
    <foo/>
    <bar/>
  </compilerArguments>

Why is that syntax completely fucking stupid, you might ask? Well, dear reader,
because the arguments that I'm actually passing end up looking like this:

  <compilerArguments>
    <Xlint/>
    <Xlint:-serial/>
  </compilerArguments>

which is a case study in how not to represent information in XML. I didn't even
try that originally because I was sure that it would not work, given the wacky
non-[a-zA-z]+ nature of the argument I needed to supply. The fact that it does
work gives me the fear.

You might wonder if the following form would provide satisfaction:

  <compilerArguments>
    <compilerArgument>-Xlint</compilerArgument>
    <compilerArgument>-Xlint:-serial</compilerArgument>
  </compilerArguments>

Other than being absurdly verbose, it seems right in line with The Maven Way
(tm). However, that results in -compilerArgument=-Xlint and
-compilerArgument=-Xlint:-serial being passed to the compiler. Hilarity
naturally ensues.


git-svn-id: https://samskivert.googlecode.com/svn/trunk@2859 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2010-09-08 21:28:27 +00:00
parent 312d38c6b7
commit 9699eceea7
+3
View File
@@ -85,6 +85,9 @@
<configuration>
<source>1.5</source>
<target>1.5</target>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<compilerArguments><Xlint/><Xlint:-serial/></compilerArguments>
<excludes>
<exclude>com/samskivert/velocity/**</exclude>
<exclude>com/samskivert/xml/**</exclude>