Since Clojure now has a stable 1.0.0 I would like to take a step
forward and push it to Maven's Central Repo at http://repo1.maven.org/maven2/.
This would allow people using Maven to integrate Clojure more easily,
since no 3rd party repo wouldn't be involved anymore.
I'm going to follow these guidelines:
http://maven.apache.org/guides/mini/guide-central-repository-upload.html.
But before I'll proceed, I would like to make sure, that there a no
concerns about doing so. If anyone is concerned about pushing Clojure
into Central, please give me some feedback.
If you're OK with the idea, I will alter the distributed POM slightly
to meet the guidelines. The modification is about the missing scm-
part. POM and clojure-1.0.0.jar would then go into the upload bundle
and would be submitted to the Upload Team. Should I add clojure-1.0.0-
sources.jar as well?
If you do push clojure-1.0.0.jar, please also add the sources jar;
it's especially annoying when one has to set up sources jars manually
(in intellij or whatever) by manually downloading the source and
depositing it somewhere safe on the filesystem when maven could be
doing it for me.
Thanks!
--josh
On May 6, 1:09 pm, Stefan Hübner <sthueb...@googlemail.com> wrote:
> Since Clojure now has a stable 1.0.0 I would like to take a step
> forward and push it to Maven's Central Repo athttp://repo1.maven.org/maven2/.
> This would allow people using Maven to integrate Clojure more easily,
> since no 3rd party repo wouldn't be involved anymore.
> I'm going to follow these guidelines:http://maven.apache.org/guides/mini/guide-central-repository-upload.html.
> But before I'll proceed, I would like to make sure, that there a no
> concerns about doing so. If anyone is concerned about pushing Clojure
> into Central, please give me some feedback.
> If you're OK with the idea, I will alter the distributed POM slightly
> to meet the guidelines. The modification is about the missing scm-
> part. POM and clojure-1.0.0.jar would then go into the upload bundle
> and would be submitted to the Upload Team. Should I add clojure-1.0.0-
> sources.jar as well?
> If you do push clojure-1.0.0.jar, please also add the sources jar;
> it's especially annoying when one has to set up sources jars manually
> (in intellij or whatever) by manually downloading the source and
> depositing it somewhere safe on the filesystem when maven could be
> doing it for me.
> Thanks!
> --josh
> On May 6, 1:09 pm, Stefan Hübner <sthueb...@googlemail.com> wrote:
>> Hi all,
>> Since Clojure now has a stable 1.0.0 I would like to take a step
>> forward and push it to Maven's Central Repo athttp://repo1.maven.org/maven2/.
>> This would allow people using Maven to integrate Clojure more easily,
>> since no 3rd party repo wouldn't be involved anymore.
>> I'm going to follow these guidelines:http://maven.apache.org/guides/mini/guide-central-repository-upload.html.
>> But before I'll proceed, I would like to make sure, that there a no
>> concerns about doing so. If anyone is concerned about pushing Clojure
>> into Central, please give me some feedback.
>> If you're OK with the idea, I will alter the distributed POM slightly
>> to meet the guidelines. The modification is about the missing scm-
>> part. POM and clojure-1.0.0.jar would then go into the upload bundle
>> and would be submitted to the Upload Team. Should I add clojure-1.0.0-
>> sources.jar as well?
>> I also think it makes sense to deposit the whole "battery" :
>> clojureXX.jar
>> clojure-slimXX.jar
> OK, I would bundle clojure-slim.jar too. I'm not familiar with it, though
> curious. Would you enlighten me by throwing some light on it's purpose?
clojure is divided into clojure files (in folder src/clj/ ) and java
files (in folder src/jvm/ )
clojure-slimXX.jar contains compiled java files from src/jvm/ + clj
files from src/clj/
clojureXX.jar contains compiled java files from src/jvm/ + clj files
from src/clj/ + compiled into java classes cjl files from src/clj/
clojureXX.jar has a better startup time since clj files are already
compiled into bytecode into classes files (via AOT - Ahead Of Time -
clojure files compilation)
clojure-slimXX.jar is much smaller than clojureXX.jar. And the clj
files will be compiled into bytecode in memory "Just in Time"
Certainly both serve different needs for different people.
Regards,
Laurent PETIT <laurent.pe...@gmail.com> writes: > 2009/5/7 Stefan Hübner <sthueb...@googlemail.com>:
>> Laurent PETIT <laurent.pe...@gmail.com> writes:
>>> I also think it makes sense to deposit the whole "battery" : >>> clojureXX.jar >>> clojure-slimXX.jar
>> OK, I would bundle clojure-slim.jar too. I'm not familiar with it, though >> curious. Would you enlighten me by throwing some light on it's purpose?
> clojure is divided into clojure files (in folder src/clj/ ) and java > files (in folder src/jvm/ )
> clojure-slimXX.jar contains compiled java files from src/jvm/ + clj > files from src/clj/ > clojureXX.jar contains compiled java files from src/jvm/ + clj files > from src/clj/ + compiled into java classes cjl files from src/clj/
> clojureXX.jar has a better startup time since clj files are already > compiled into bytecode into classes files (via AOT - Ahead Of Time - > clojure files compilation) > clojure-slimXX.jar is much smaller than clojureXX.jar. And the clj > files will be compiled into bytecode in memory "Just in Time"
> Certainly both serve different needs for different people. > Regards,
One question, though: I see that you want to name the artifact
"clojure-lang" and not just "clojure".
Why not just "clojure" as is the case for the ant build script ?
I guess this could just confuse people ?
2009/5/7 Stefan Hübner <sthueb...@googlemail.com>:
>> 2009/5/7 Stefan Hübner <sthueb...@googlemail.com>:
>>> Laurent PETIT <laurent.pe...@gmail.com> writes:
>>>> I also think it makes sense to deposit the whole "battery" :
>>>> clojureXX.jar
>>>> clojure-slimXX.jar
>>> OK, I would bundle clojure-slim.jar too. I'm not familiar with it, though
>>> curious. Would you enlighten me by throwing some light on it's purpose?
>> clojure is divided into clojure files (in folder src/clj/ ) and java
>> files (in folder src/jvm/ )
>> clojure-slimXX.jar contains compiled java files from src/jvm/ + clj
>> files from src/clj/
>> clojureXX.jar contains compiled java files from src/jvm/ + clj files
>> from src/clj/ + compiled into java classes cjl files from src/clj/
>> clojureXX.jar has a better startup time since clj files are already
>> compiled into bytecode into classes files (via AOT - Ahead Of Time -
>> clojure files compilation)
>> clojure-slimXX.jar is much smaller than clojureXX.jar. And the clj
>> files will be compiled into bytecode in memory "Just in Time"
>> Certainly both serve different needs for different people.
>> Regards,
Laurent PETIT <laurent.pe...@gmail.com> writes: > Seems fine to me.
> One question, though: I see that you want to name the artifact > "clojure-lang" and not just "clojure". > Why not just "clojure" as is the case for the ant build script ?
> I guess this could just confuse people ?
Very good point! That's exactly the kind of feedback I was hoping to get. Pushing a library to Maven Central isn't easy to rewind, if it's possible at all. So I want to make sure beforehand, that the right thing is going to get there.
So, here's my explanation, and I hope it is reasonable:
I just used the artifactId which is defined in the pom.xml shipped with Clojure since r502 (2007-10-30). Why "clojure-lang" was chosen in favour of just "clojure" confused me too, so I can not give a good explanation. Maybe Rich or the original contributor can?
But, since Clojure has shipped this artifactId for 18 months now, it has materialized in many people's repo like that, I guess. In fact, the official 1.0 distribution "clojure-1.0.0.zip" has been shipped with this pom.xml. It seems a matter of fact, that in the maven world Clojure sails under the "clojure-lang" flag since day zero.
So I refused to change that quasi-standard, as I don't want to confuse other people, who got used to "clojure-lang" in their maven world.
>> One question, though: I see that you want to name the artifact >> "clojure-lang" and not just "clojure". >> Why not just "clojure" as is the case for the ant build script ?
>> I guess this could just confuse people ?
> Very good point! That's exactly the kind of feedback I was hoping to > get. Pushing a library to Maven Central isn't easy to rewind, if it's > possible at all. So I want to make sure beforehand, that the right thing > is going to get there.
> So, here's my explanation, and I hope it is reasonable:
> I just used the artifactId which is defined in the pom.xml > shipped with Clojure since r502 (2007-10-30). Why "clojure-lang" was > chosen in favour of just "clojure" confused me too, so I can not give a > good explanation. Maybe Rich or the original contributor can?
> But, since Clojure has shipped this artifactId for 18 months now, it has > materialized in many people's repo like that, I guess. In fact, the > official 1.0 distribution "clojure-1.0.0.zip" has been shipped with this > pom.xml. It seems a matter of fact, that in the maven world Clojure > sails under the "clojure-lang" flag since day zero.
> So I refused to change that quasi-standard, as I don't want to confuse > other people, who got used to "clojure-lang" in their maven world.
> What shall we do then? > -Stefan
You're right, so from the beginning the ant script creates "clojure..." while the maven script creates "clojure-lang...".
Well, I thought that since the official build script is the ant one, the pom.xml should be adapted. In either cases, people will have to change things ...
I guess only Rich can make the choice: statu quo, clojure (breaks maven artifact id), clojure-lang (breaks build.xml).
Laurent PETIT <laurent.pe...@gmail.com> writes: > You're right, so from the beginning the ant script creates > "clojure..." while the maven script creates "clojure-lang...".
To be precise here, there's no such maven script that creates "clojure-lang", neither does Maven do anything during Clojure's build process. The pom.xml is created by Ant too.
> Well, I thought that since the official build script is the ant one, > the pom.xml should be adapted. In either cases, people will have to > change things ...
> I guess only Rich can make the choice: statu quo, clojure (breaks > maven artifact id), clojure-lang (breaks build.xml).
I second your notion. I guess Howard Lewis Ship ought to get involved here too, since he maintains the continuous builds and seems to have his own build scripts, as long as I'm right. Are they monitoring this thread?
>> You're right, so from the beginning the ant script creates >> "clojure..." while the maven script creates "clojure-lang...".
> To be precise here, there's no such maven script that creates > "clojure-lang", neither does Maven do anything during Clojure's build > process. The pom.xml is created by Ant too.
I know(*) :-), but it's a recent addition. The name "clojure-lang" was there before ant creating the pom from pom-template, and this artifactId name was not even closely reviewed during the process.
>> Well, I thought that since the official build script is the ant one, >> the pom.xml should be adapted. In either cases, people will have to >> change things ...
>> I guess only Rich can make the choice: statu quo, clojure (breaks >> maven artifact id), clojure-lang (breaks build.xml).
> I second your notion. I guess Howard Lewis Ship ought to get involved > here too, since he maintains the continuous builds and seems to have his > own build scripts, as long as I'm right. Are they monitoring this > thread?
I think so.
> -Stefan
(*) I did the patch that made pom.xml generated from build.xml
On Thu, May 7, 2009 at 4:47 PM, J. McConnell <jdo...@gmail.com> wrote:
>> I guess only Rich can make the choice: statu quo, clojure (breaks
>> maven artifact id), clojure-lang (breaks build.xml).
> Not that I have a strong stake in this, but I'd vote for going with
> "clojure" and getting it right for 1.0.
Right. It's easier to change this pom before it goes into the public
repo than after. When people are going to change their pom from some
odd snapshot to 1.0 anyway, then this is probably a good time to sneak
this artifactId change in too, no?
> - J.
-- Venlig hilsen / Kind regards,
Christian Vest Hansen.
Christian Vest Hansen <karmazi...@gmail.com> writes:
> On Thu, May 7, 2009 at 4:47 PM, J. McConnell <jdo...@gmail.com> wrote:
>>> I guess only Rich can make the choice: statu quo, clojure (breaks >>> maven artifact id), clojure-lang (breaks build.xml).
>> Not that I have a strong stake in this, but I'd vote for going with >> "clojure" and getting it right for 1.0.
> Right. It's easier to change this pom before it goes into the public > repo than after. When people are going to change their pom from some > odd snapshot to 1.0 anyway, then this is probably a good time to sneak > this artifactId change in too, no?
I agree with your position. So, along with uploading the bundle to Central, I'll provide a patch to reflect pom changes in SVN.
I'm going to push the bundle forward during the weekend.
Laurent PETIT <laurent.pe...@gmail.com> writes: > I also think it makes sense to deposit the whole "battery" : > clojureXX.jar > clojure-slimXX.jar > clojure-sourcesXX.jar
Since clojure-slim is not bundled in the distributed ZIP for 1.0.0, I'm going the build all three libraries from SVN tag "1.0" (r1365).
I've figured, though, that the resulting libraries contain class files, which are of different size than those found in the distributed clojure-1.0.0.jar. How can this actually happen? Is this problematic? My build environment was Debian squeeze, SUN J2SE 1.6.0_13, Ant 1.7.0, OS character encoding UTF-8.
Eventhough I do not have an explanation for the different build results, building from a fresh /svn/tags/1.0 should be OK, shouldn't it?
> > I also think it makes sense to deposit the whole "battery" :
> > clojureXX.jar
> > clojure-slimXX.jar
> > clojure-sourcesXX.jar
> Since clojure-slim is not bundled in the distributed ZIP for 1.0.0, I'm
> going the build all three libraries from SVN tag "1.0" (r1365).
svn tag 1.0 is correct, it's a copy of branch 1.0 in revision 1362 .
> I've figured, though, that the resulting libraries contain class files,
> which are of different size than those found in the distributed
> clojure-1.0.0.jar. How can this actually happen? Is this problematic?
> My build environment was Debian squeeze, SUN J2SE 1.6.0_13, Ant 1.7.0,
> OS character encoding UTF-8.
note that clojure must be compatible with JDK 1.5, so if you compile with
1.6, maybe you should verify the compatibility mode (not sure if what I
write here makes sense, I'm not a specialist in javac retrocompatibility
concerns).
>> One question, though: I see that you want to name the artifact
>> "clojure-lang" and not just "clojure".
>> Why not just "clojure" as is the case for the ant build script ?
>> I guess this could just confuse people ?
> Very good point! That's exactly the kind of feedback I was hoping to
> get. Pushing a library to Maven Central isn't easy to rewind, if it's
> possible at all. So I want to make sure beforehand, that the right thing
> is going to get there.
> So, here's my explanation, and I hope it is reasonable:
> I just used the artifactId which is defined in the pom.xml
> shipped with Clojure since r502 (2007-10-30). Why "clojure-lang" was
> chosen in favour of just "clojure" confused me too, so I can not give a
> good explanation. Maybe Rich or the original contributor can?
> But, since Clojure has shipped this artifactId for 18 months now, it has
> materialized in many people's repo like that, I guess. In fact, the
> official 1.0 distribution "clojure-1.0.0.zip" has been shipped with this
> pom.xml. It seems a matter of fact, that in the maven world Clojure
> sails under the "clojure-lang" flag since day zero.
> So I refused to change that quasi-standard, as I don't want to confuse
> other people, who got used to "clojure-lang" in their maven world.
> What shall we do then?
> -Stefan
-- Howard M. Lewis Ship
Creator of Apache Tapestry
Director of Open Source Technology at Formos
On 9 Mai, 17:08, Howard Lewis Ship <hls...@gmail.com> wrote:
> clojure-lang because there will be a clojure-contrib artifact for the
> same group.
It didn't occur to me yet, that having clojure-contrib in the same
group would render "org.clojure:clojure" a bad choice as
groupId:artifactId for clojure itself. Does your suggestion follow a
particular recommendation or policy?
On 8 Mai, 01:39, Laurent PETIT <laurent.pe...@gmail.com> wrote:
> note that clojure must be compatible with JDK 1.5, so if you compile with
> 1.6, maybe you should verify the compatibility mode (not sure if what I
> write here makes sense, I'm not a specialist in javac retrocompatibility
> concerns).
Thanks for the tip! I'm gonna use a genuine JDK 1.5 then.
> On 8 Mai, 01:39, Laurent PETIT <laurent.pe...@gmail.com> wrote:
> > note that clojure must be compatible with JDK 1.5, so if you compile with
> > 1.6, maybe you should verify the compatibility mode (not sure if what I
> > write here makes sense, I'm not a specialist in javac retrocompatibility
> > concerns).
> Thanks for the tip! I'm gonna use a genuine JDK 1.5 then.
Yes, then you would be certain of the target platform.
Compiling with javac -target=1.5 should also work, though.
> 2009/5/9 Stefan Hübner <sthueb...@googlemail.com>
>> On 8 Mai, 01:39, Laurent PETIT <laurent.pe...@gmail.com> wrote:
>> > note that clojure must be compatible with JDK 1.5, so if you compile
>> with
>> > 1.6, maybe you should verify the compatibility mode (not sure if what I
>> > write here makes sense, I'm not a specialist in javac retrocompatibility
>> > concerns).
>> Thanks for the tip! I'm gonna use a genuine JDK 1.5 then.
> Yes, then you would be certain of the target platform.
> Compiling with javac -target=1.5 should also work, though.
Hum... nevermind, -target=1.5 is already there in build.xml ...
On 10 Mai, 22:17, d...@kronkltd.net (Daniel E. Renfer) wrote:
> Phil Hagelberg <p...@hagelb.org> writes:
> > Howard Lewis Ship <hls...@gmail.com> writes:
> >> clojure-lang because there will be a clojure-contrib artifact for the
> >> same group.
> > And this is ... a bad thing? I'm lost.
> > -Phil
> Good, at least I'm not the only one.
> Why can't we have both clojure and clojure-contrib as Id's?
Right! I am hoping, that Howard will shade some light on his view. I'm
really interested in all decisions regarding the Maven bundle to be as
transparent as possible. Since people will ask why the artifact has
been given a certain ID, I hope, this thread will document those
decisions for future reference. Thus, Howard's (and Rich's too)
opinion and explanation is be highly appreciated.
So uploading the bundle is going to be deferred for a couple of days.
Laurent PETIT wrote:
> > On 8 Mai, 01:39, Laurent PETIT <laurent.pe...@gmail.com> wrote:
> > > note that clojure must be compatible with JDK 1.5, so if you compile with
> > > 1.6, maybe you should verify the compatibility mode (not sure if what I
> > > write here makes sense, I'm not a specialist in javac retrocompatibility
> > > concerns).
> Compiling with javac -target=1.5 should also work, though.
I read somewhere an authoritative article that mentioned the only way
to produce 100% compatible bytecode is to compile using the proper jvm
version. They explicitly mentioned 1.6 compiling with a target of 1.4
or 1.5 wouldn't produce 100% compatible byte code for these platforms.
Sadly, I don't remember the explanation, though. :\ In any case,
that's good to keep in our minds for future work.