samskivert 9699eceea7 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
2010-09-08 21:28:27 +00:00
2007-04-06 23:14:43 +00:00
2010-09-08 19:08:01 +00:00
2010-07-06 17:54:54 +00:00
2010-09-08 19:08:53 +00:00
2010-08-27 21:33:16 +00:00

The samskivert library
----------------------

The samskivert library (SL) aims to provide useful reusable Java routines that
do things for which I've been unable to find useful reusable implementations on
the net.

Given the emphasis on reusability, SL attempts to closely adhere to the
following principles:

* Each individual module should depend as little as possible on other SL
  modules. Obvious exceptions include modules that are a logical extension of
  other modules and modules that clearly require a service that is implemented
  by another SL module and would have to implement that service themselves in
  the absence of dependence on the other module.

* Modules should be both simple to use and as general purpose as possible. To
  meet these two competing requirements, a balance must be struck at that sweet
  spot where reusability is maximized.

* Code included in SL will freely depend on JDK packages available in the Java
  2 platform and beyond. SL is initially a repository of software useful for
  server-side or stand alone applications and therefore need not make
  compromises to function in the jungle of JVMs in commonly available web
  browsers.

* We are not here to reinvent the wheel, nor to provide a uniform interface to
  every software service under the sun. If something is available in a freely
  redistributable and reusable form from someone else, it won't be found in SL.
  If SL depends on such software from another source, it will provide clear
  documentation on how to get that software and make use of it within the scope
  of SL's particular needs. Again a balance of reusability will be struck here
  and software that is sufficiently difficult to make usable in an arbitrary
  environment will not be used by SL and may be "reinvented".

Building
--------

The library is built using ant. If you aren't already using ant for other
projects, it can be found here:

  http://ant.apache.org/

Invoke ant with any of the following targets:

  all: builds the class files and javadoc documentation
  compile: builds only the class files (dist/classes)
  javadoc: builds only the javadoc documentation (dist/docs)
  tests: builds and runs the unit tests
  dist: builds the distribution jar file (dist/samskivert.jar)

It is highly recommended to use the Ivy-based build file, which will
automatically download any dependencies. The build file will also download Ivy
if needed. For example, to build everything invoke:

 % ant -f build-ivy.xml all

Distribution
------------

The samskivert library is released under the LGPL. The most recent version
of the library is available here:

  http://code.google.com/p/samskivert/

Contribution
------------

Contributions to SL are welcome. Email mdb@samskivert.com with patches or
suggestions.

$Id$
S
Description
Samskivert Library
Readme 15 MiB
Languages
Java 96.5%
Shell 2.2%
HTML 1.3%