Kind of offline until Monday. The missing source dist and the opensll gem is 
either already there or just a small config change. BUT the biggest thing is to 
get all the remaining snapshot dependency released first - can not look at the 
current state.

And my class loader patch would be great to get some comments on it - maybe I 
was too unclear about it.

Anyways one the snapshots are gone I can see into how to use the maven release 
plugin to do the actual release. But it has to wait until Monday.

Regards Christian




Thomas E Enebo <tom.en...@gmail.com> schrieb:
>Kristian,
>
>  Hiro mentions a couple of more items needed to complete issue 912 and
>some things which we need to release 1.7.5.  Any chance you can take a
>look
>and weigh in (or better yet make it work)?
>
>-Tom
>
>
>
>On Thu, Jul 25, 2013 at 6:35 AM, kristian <m.krist...@web.de> wrote:
>
>> hi,
>>
>> the missing bits are roughly (as far I am right ;)
>>
>> * maven artifacts jruby-core, jruby-stdlib, jruby-complete
>> * dist files tar.gz and zip
>> * jruby-jars gem
>> * osgi
>> * various gems: bouncy-castle-java, openssl
>>
>> I just pushed a branch 'pom-proposal' to github where the above is
>> partially done but misses the dist files and openssl gem and osgi. on
>top
>> of it there are improvements in building the core jar, i.e. repeated
>run
>> dropped from 16s to 10s on my machine (I guess 9s is still possible
>;).
>>
>> ## vendored jars and some possible improvement ##
>>
>> with the jruby stdlib maven artifact I did NOT include the
>bouncy-castle
>> and jline jars as "vendored" jars. I guess that is my personal thingy
>that
>> vendored jars and gems are better avoided to prevent version clashes
>with
>> jars/gems used somehow along with that artifact. instead it declares
>them
>> as regular dependency. i.e. for bouncy-castle that approach allows to
>use a
>> different version of BC for jruby maven artifact. actually even
>though the
>> latest BC does not compile openssl the compile error ONLY affects a
>single
>> method for a password protected container (I would have fixed the
>code but
>> there are no tests and to figure a way of trying out the new code is
>a
>> bigger task for me).
>>
>> vendored jars whether with jruby or within gems always bothered me -
>I
>> have no control over them and there is no easy to find out which
>version I
>> am using and there is no way to isolate the hidden jars from gems
>from the
>> java application which uses the ScriptingContainer.
>>
>> short list of problematic gems is (I might be wrong here and there
>since I
>> did not verify them right now - just out of my head):
>> * jrjackson - has some jackson jar
>> * nokogiri - xercers and other xml related jars
>> * neo4j - have not check what they all have
>> * jruby-openssl - bouncy castle
>>
>> one way to help a java application to choose their "own" version of
>those
>> jars is to isolate the jrubyclassloader from its parent classloader.
>this
>> is done for servlet-classloader via a configuration setting "load the
>> classes from war first before going to the parent classloader". this
>is
>> also done with other projects where you want to separate plugins and
>their
>> dependencies from the containing application and their dependencies.
>and
>> this I have done with the commit
>9b9ee54022c54a5e49d6ef3dae73e5dad30a6039
>>
>> that should be perfectly save since if an application had no jar
>versions
>> conflict problems nothing really changes beside the search order of
>those
>> classes. but now you can use any gem with your ScriptingContainer and
>you
>> are still be free to choose any jar for your java application or you
>can
>> use any bouncy-castle-java gem with ScriptingContainer without
>affecting
>> the java application.
>>
>> the commit 86d23de4687e8ca6e7eba9ac5f9f5ca2257eda24 adds some
>integration
>> tests for the jruby artifact as well the jruby-complete artifact
>showing
>> how to use different version BC for java and ruby in ONE application.
>one
>> could a system property for that behavior to be switched on/off but
>it
>> should be just fine without the switch - maybe java scripting has
>some say
>> in that as well ?
>>
>> for me that lifts both gems and jars on a more equal level: the BC
>gem
>> gets updated the same way as you would update a newer minitest gem
>with MRI
>> and the BC jar from jruby can be "overwritten" by just adding the
>desired
>> version to the classloader/classpath along with jruby.
>>
>> there is a slight difference between the jruby artifact and
>> jruby-complete: jruby-complete has the BC jars vendored, i.e. a
>different
>> BC jar in the classpath will not affect openssl. with the jruby
>artifact
>> the BC jar is not vendored, i.e. it will take the BC version from the
>> classloader and that can be a different one than the declared
>dependency of
>> the jruby artifact.
>>
>> please note that
>> * not vendoring BC and jline with jruby artifact
>> * reverse class loading on the JRubyClassLoader
>> are TWO independent topics.
>>
>> ## jruby-core maven artifact for maven projects ##
>>
>> next change I need to point out is: there are three maven artifacts:
>> jruby, jruby-core and jruby-stdlib
>> in order to use jruby for a maven/ivy/buildr/... project you need to
>use
>> org.jruby:jruby:1.7.5.dev, with jruby-1.7.4 you needed to use
>> org.jruby:jruby-core:1.7.4 and in older version you needed to add
>both
>> jruby-core and jruby-stdlib in your project. the reason for that
>change is
>> just that jruby-core (./core/pom.xml) does not have a dependency to
>> jruby-stdlib and can not have it at that point of the build.
>>
>> ## gems with maven ##
>>
>> for packaging gems I used the gem-maven-plugin, actually I used the
>> https://github.com/tesla/tesla-polyglot to generate the pom.xml but
>you
>> can just use tesla maven to execute it directly. currently I am
>working on
>> getting this on rubygems.org as ruby-maven gem. all the pom.rb from
>the
>> pom-proposal branch are generated by tesla and can be executed
>directly. it
>> is possible that a tesla maven run dumps the generated pom.xml (it is
>also
>> possible as readonly dumps). any feedback on the DSL itself are
>welcome as
>> well !
>>
>> ### bouncy-castle-java gem ###
>>
>> the bouncy-castle-java gem looks rather straight forward with
>ruby-maven:
>> ./gems/bouncy-castle-java/Mavenfile
>> where the jar is declared as deps inside
>> ./gems/bouncy-castle-java/bouncy-castle-java.gemspec
>> the version comes from an external version file which could be
>included
>> with the gem as well but I just kept the gem as close as it was
>before.
>>
>> ### jruby-jars gem ###
>>
>> that one has almost the same setup as the bouncy-castle-java gem. the
>> version is coded inside the gemspec and the pom parent declaration
>(is
>> called inherit in Mavenfile) uses the gemspec version. you all might
>have
>> seen that 1.7.5.dev is hardcoded in all pom.xml !!! the dependencies
>I put
>> into the Mavenfile instead of the gemspec file. these dependencies
>are just
>> shaded jruby-core and jruby-stdlib artifacts and they need to have
>them
>> built first. due to that built order it feels that
>> ./gems/jruby-jars
>> ./gems/jruby-core-complete
>> ./gems/jruby-stdlib-complete
>> should move to
>> ./maven/jruby-jars
>> ./maven/jruby-core-complete
>> ./maven/jruby-stdlib-complete
>>
>> ## openssl gem ##
>>
>> that one I did not make yet since it should move into ext/openssl
>since it
>> is easy to package a gem with a "jar extension" and the ./ext/opensll
>part
>> is not meant to deploy on maven central itself.ext/openssl/pom.rb
>would
>> probably just get a "gemspec :jar=>'jopenssl'" declaration and some
>more
>> little mods'
>>
>> ## profile to build all or parts ##
>>
>> built all - without the 'package' goal it makes all the reporting as
>well
>> which takes a long long time
>> $ mvn -Pall package
>>
>> jruby-complete artifact
>> $ mvn -P complete
>>
>> jruby artifact
>> $ mvn -P main
>>
>> jruby-rake-plugin artifact
>> $ mvn -P rake-plugin
>>
>> jruby dist files
>> $ mvn -P dist
>>
>> jruby docs
>> $ mvn -P docs
>>
>> jruby gems
>> $ mvn -P gems
>>
>> the reporting needs to go away from all in its own profile. the gems
>> profile should become jruby-jars and the bouncy-castle-java gem will
>get
>> some rake tasks (using ruby-maven gem) to build the gem.
>>
>> ## epilog ##
>>
>> it is a bigger task for me to write up such an email then writing
>code ;)
>> and for me once something works I can easily get carried away with
>the
>> next thing and forgetting to push and/or publish things so the issue
>> https://github.com/jruby/jruby/issues/912 was the hint that I have
>> forgotten something !!!
>>
>> the idea or vision to treat jars and gems more equal reflects in
>jbundler
>> project. I will have a look in how warbler can make use main jruby
>maven
>> artifact as well use jbundler for getting all the jar inside the
>war-file
>> by taking the dependency of jruby into account.
>>
>> hope I stayed in line with the jruby project !!!
>>
>> regards,
>> christian
>>
>>
>
>
>-- 
>blog: http://blog.enebo.com       twitter: tom_enebo
>mail: tom.en...@gmail.com

-- 
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.

Reply via email to