> 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-sourcesXX.jar
Will be bundled.
-Stefan
I would bundle clojure-slim.jar as a "classified" clojure, like Maven
calls it. So the final filename would be "clojure-lang-1.0.0-slim.jar".
To use this one instead of clojure-lang-1.0.0.jar, the following
dependency needs to be declared:
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure-lang</artifactId>
<version>1.0.0</version>
<classifier>slim</classifier>
</dependency>
-Stefan
> 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.
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
Not that I have a strong stake in this, but I'd vote for going with
"clojure" and getting it right for 1.0.
- J.
> 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?
-Stefan
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?
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.
-Stefan
> 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?
-Stefan
> I also think it makes sense to deposit the whole "battery" :Since clojure-slim is not bundled in the distributed ZIP for 1.0.0, I'm
> clojureXX.jar
> clojure-slimXX.jar
> clojure-sourcesXX.jar
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.
> 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?
Daniel E. Renfer
ataggart <alex.t...@gmail.com> writes:
> I use Maven indirectly via Ivy, so I just wanted to request that,
> whatever the choice of naming, the artifact and module names should
> parallel. The reason for this request is that Ivy can resolve
> dependencies in maven by creating URLs from a pattern. For example:
>
> <dependency org="org.clojure" name="clojure" rev="1.0.0" />
> pulls from org/clojure/clojure/1.0.0/clojure-1.0.0.jar
>
> <dependency org="org.clojure" name="clojure-lang" rev="1.0.0" />
> pulls from org/clojure/clojure-lang/1.0.0/clojure-lang-1.0.0.jar
That's exactly how Maven does it too. So there will be no broken patterns.
> Both fine, and there are a few (thankfully, very few) Maven artifacts
> which break this pattern. But please do not do something that results
> in a URL like:
>
> org/clojure/clojure-lang/1.0.0/clojure-1.0.0.jar
I haven't heard of any such artifact yet. Can you name one (just curious)?
> As for clojure-contrib, <dependency org="org.clojure" name="clojure-
> contrib" rev="1.0.0" /> pulling from org/clojure/clojure-contrib/1.0.0/
> clojure-contrib-1.0.0.jar looks fine to me.
For the moment, that's out of scope for me. But true, the pattern must
follow the same rules.
-Stefan
Please excuse me, as I am just now trying to get used to Maven, so I'm
still learning all the conventions.
Wouldn't the fact that their artifact id's are different clearly
differentiate the two? That's certainly how it works everywhere else.
Is there some sort of Maven rule that I just don't know about that
having an artifact id that is a derivative of another id in the same
group implies some sort of inheritance or something?
If not, we should just get it changed to 'clojure', so it's in line
with the project name, and the same name for the jars as the official
ant script.
Unless you have some reason why it's bad.
Daniel E. Renfer
> On Tue, May 12, 2009 at 4:51 PM, Howard Lewis Ship <hls...@gmail.com> wrote:
>>
>> It's the answer to why the main artifact is called "clojure-lang" not
>> just "clojure". It's do differentiate Rich's framework,
>> "clojure-lang", from the Contrib librarys ("clojure-contrib") even
>> though they are both in the same Maven group.
>
> Please excuse me, as I am just now trying to get used to Maven, so I'm
> still learning all the conventions.
>
> Wouldn't the fact that their artifact id's are different clearly
> differentiate the two?
absolutely.
> That's certainly how it works everywhere else. Is there some sort of
> Maven rule that I just don't know about that having an artifact id
> that is a derivative of another id in the same group implies some sort
> of inheritance or something?
No, there is noch such rule. In fact, there isn't much magic behind
Maven's groupId and artifactId, really. It's just a matter of taste how
you name (by which artifactId is meant) your artifacts within a
group. Their artifactIds are directly reflected in their filenames.
If you wanted to place many artifacts within the same group, though, a
artifactId-nomenclatur would help people to find what they were looking
for. But it's completely up to you to come up with such a convention and
communicate it to the users (in one or another way).
-Stefan
-Stefan
Once the bundle is uploaded to Central, one of the following two
snippets can be used to declare a dependency to Clojure:
<!-- Clojure with precompiled Lisp sources -->
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.0.0</version>
</dependency>
<!-- Clojure without precompiled Lisp sources -->
<dependency>
<groupId>org.clojure</groupId>
<artifactId>clojure</artifactId>
<version>1.0.0</version>
<classifier>slim</classifier>
</dependency>
I'll submit patches to reflect the changed POM.
Thank you all for your support!
Stefan Hübner
> On Mon, May 18, 2009 at 8:59 AM, Stefan Hübner <sthu...@googlemail.com> wrote:
>>
>> I've submitted the Maven bundle for Clojure 1.0.0 to
>> http://jira.codehaus.org/browse/MAVENUPLOAD-2464. Processing the request
>> might take a couple of days.
>
> The upload guide says four weeks. Repository synchronization is the
> long term solution, I think.
Thats probably true. If someone from the core team/contributors has the
resources to set this up, that would be cool. It would speed up
promotion to Maven Central alot (fully automatic) - for future releases.