On 12/04/2012 01:10 PM, Vincent Massol wrote:
Hi devs,
I'd like to propose that we stop shading Rendering Standalone. The reasons are:
1) It's far from perfect. For example we have at least 3 libs we cannot shade:
<!-- We don't relocate the following packages since they cause
runtime issues:
- javax.xml
- org.w3c
- org.apache.xerces
-->
2) As we added some libs to our deps we forgot to relocate them so right now we don't
shade (to cite a few): com.steadystate.css, javax.validation, ant, aspectj, slf4j, etc
3) There are lots of resources coming from dependent jars and those are not shaded. For
example:
283 Tue Dec 04 18:50:42 CET 2012 javacc.class
286 Tue Dec 04 18:50:42 CET 2012 jjdoc.class
235 Tue Dec 04 18:50:42 CET 2012 jjtree.class
0 Tue Dec 04 18:50:42 CET 2012 org/xwiki/shaded/javacc/
or
3783 Tue Dec 04 18:50:42 CET 2012 org/xwiki/shaded/javacc/utils/JavaFileGenerator.class
3693 Tue Dec 04 18:50:42 CET 2012 templates/CharStream.template
15990 Tue Dec 04 18:50:42 CET 2012 templates/JavaCharStream.template
867 Tue Dec 04 18:50:42 CET 2012 templates/MultiNode.template
1317 Tue Dec 04 18:50:42 CET 2012 templates/Node.template
5962 Tue Dec 04 18:50:42 CET 2012 templates/ParseException.template
12711 Tue Dec 04 18:50:42 CET 2012 templates/SimpleCharStream.template
3227 Tue Dec 04 18:50:42 CET 2012 templates/SimpleNode.template
4005 Tue Dec 04 18:50:42 CET 2012 templates/Token.template
368 Tue Dec 04 18:50:42 CET 2012 templates/TokenManager.template
4244 Tue Dec 04 18:50:42 CET 2012 templates/TokenMgrError.template
48 Tue Dec 04 18:50:42 CET 2012 version.properties
So I'd like to keep a standalone distribution to make it easy to test XWiki Rendering
but without any shading.
Here's my +1
+0.
I believe that it will be a good idea to shade a few critical libraries
that are likely to appear in incompatible version, and which are known
to cause problems otherwise and which work fine when shaded. I did a
quick check on dependency:tree and there doesn't seem to be any such
library, but we've had such problems with rhino and asm in the
xwiki-platform, and even log4j when the container prefers to use its own
version.
The most problematic libraries AFAIK are the ones we exclude because they can't be
shaded :)
The problem is that right now we document this as if it was a working solution when it
definitely isn't and I don't think it's good that we do so. Providing just a
bundle to quickly get started if you don't have maven and making sure to mention the
JAR hell issue and how to fix it if you want to include it in your project is the best
solution I can think of.
Actually what we could do to make sure there's no misunderstanding is just to provide
a zip will all JARs and leave it to the user to use them in his project.
Thanks
-Vincent