2009/4/23 Rich Hickey <richhic...@gmail.com>:
>
>
>
> On Apr 22, 12:41 pm, Laurent PETIT <laurent.pe...@gmail.com> wrote:
>> 2009/4/22 Rich Hickey <richhic...@gmail.com>:
>>
>> > [...]
>> > {:major 1, :minor 0, :incremental 0, :qualifier :rc1 :interim true}
>>
>> > for interim versions and
>>
>> > {:major 1, :minor 0, :incremental 0}
>>
>> > for releases. :interim tracks the SNAPSHOT segment of the version
>> > string.
>> > [...]
>> > I don't mind the build producing clojure-1.0.0.jar etc, but it doesn't
>> > now. The master build is Ant. Where is the best place to put the
>> > version info so it can be leveraged by Ant, Maven and the clojure core
>> > runtime in order to produce *clojure-version* ?
>>
>> Here a patch that allows to initialize from ant and from a file
>> version.properties the values in *clojure-version*.
>>
>> The patch only addresses the problematic of having a single place for
>> version attributes.
>> Having the ant build also use these properties for creating correctly
>> numbered jars is not part of the patch.
>>
>> Note that I had to create a new file, src/clj/clojure/core_version.clj
>> , which is created by ant as a combination of template file
>> core_version-template.clj and the properties from version.properties.
>>
>> You'll see that if you don't like the names of the keys in
>> version.properties, build.xml is the single place where to change them
>> (apart from version.properties, of course).
>> Also, if you don't like the name version.properties (e.g. if it should
>> be named project.properties or whatever for easing maven users), then
>> you just have to change its occurence in build.xml too.
>>
>> If you like it, it can file an issue to google code and attach the patch,
>>
>
> Thanks!
>
> I can't say I love the idea of generating a file during build.
Me too, that's why I have made the file as short and independent as possible.

Well, I tried to keep close to the idea of having the version numbers
"built-in", similarly to what was commited where it was also not read
from a "simpler file" at load time.

> What about clojure.jar containing a properties file it reads at load time?

Why not, indeed ? The file would have to placed in the classpath, e.g.
in directory src/jvm/clojure/lang or src/clj/clojure.

> Could the same file be read by the various builds?

For ant, yes.

For maven2, it's more complex.
Indeed, I have read past the entire reference of the pom, searched
through the ml, and it seems that it's not possible at all to have
maven2 read properties file but its own which are not suitable for our
purpose.

So I that even if we don't generate a clojure source file by reading
version.properties at load time from the classpath, it will be
difficult to avoid having to generate the maven2 pom.xml file from a
pom-template.xml ...

Not that it would be difficult, it's just a matter of adding a
init-mvn task in the ant build.xml, and make all mvn related ant tasks
depend on it.

Concerning what Howard suggested, having the maven2 pom.xml file be
the reference where the version information is placed, I can't say I
like this idea very much.
That's because maven2 pom.xml is not as structured as you have
structured the current version information (maven2 just has a single
"version" element where you place whatever you want, it's not
decomposed into major, minor, ... so it will be more difficult to do
the pattern matching :-).
And also, maven2 pom.xml is not the master build file, it's ant, so it
sounds weird to have ant go parse maven2.xml file to extract the
versioning information.

My 0,02€,

-- 
Laurent

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to