harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andreas Sewe <s...@st.informatik.tu-darmstadt.de>
Subject [classlib] HARMONY-6546: Make JARs available to Maven repository?
Date Wed, 09 Jun 2010 08:09:06 GMT
Hi all,

Mark Hindess asked me to state my case on this list, so here I am: I 
yesterday filed <https://issues.apache.org/jira/browse/HARMONY-6546>, a 
request to make the JARs of the Harmony JRE available to a central Maven 
repository.

Here are my use cases for this: While tons of libraries are available in 
such repositories (if you don't like Maven, substitute the build 
management tool of your choice), this is not true of the JRE's; these 
JARs are simply assumed to exist and are typically not an explicit 
dependency of your project. Occasionally, however, you need control not 
of the JRE you run on, but of the one you compile against. 
Crosscompiling the Scala library (scalac itself ran on OpenJDK when I 
did the tests) against the Apache Harmony JRE exposed 
<https://issues.apache.org/jira/browse/HARMONY-6533>, for example. 
Similarly, a tool like <http://mojo.codehaus.org/animal-sniffer> would 
benefit from the JRE being available as a managed dependency. Currently, 
generating a API signature for a JRE different than the one you run on 
requires a lot of manual steps: 
<http://mojo.codehaus.org/animal-sniffer-maven-plugin/examples/generating-java-signatures.html>.

In summary, doing tests (which are akin to testing with different 
compilers in the C/C++ world) to ensure compatibility across JREs is 
difficult in the Java world; the JARs of *any* JRE are simply not 
available as a "normal" project dependency. (In fact, you cannot put the 
rt.jar of Sun's/Oracle's JRE in Maven central due to some click-through 
license of theirs.)

And here's where the Apache Harmony project could IMHO help out: upload 
the classlib's JARs to Maven central. As you have already figured the 
dependencies in your JRE for OSGi, you just need to turn them into Maven 
POMs. The resulting artifacts would then have coordinates 
(groupId:artifactId:packaging:classifier:version) like 
org.apache.harmony:luni:jar:linux-x86:6.0-M2.

Mark wrote HARMONY-6546:
> Some of the jars are quite tightly coupled with the portlibrary, vmi, etc. so would be
difficult/impossible to deploy on a non-Harmony compatible VM.
>
> I'm curious how platform dependent jars - and corresponding native dlls - can be managed
in maven repositories. 

Platform dependent JARs are not a problem; that's what the classifier 
dimension of the Maven coordinates is for. Whether you want to deploy 
the corresponding native DLLs to a Maven repository is a different 
question, however, as they are not needed for the use cases I outlined 
above. Furthermore, things like this might be useless on a non-Harmony 
compatible VM. That's an issue I am well aware of. (I do some Jikes RVM 
hacking for a PhD. :-) But having the JARs available would still be 
useful, I think.

Your thoughts?

Best wishes,

Andreas Sewe

Mime
View raw message