[QFJ-305] Improvements to the build process Created: 25/Mar/08  Updated: 07/Aug/08  Resolved: 17/Jun/08

Status: Closed
Project: QuickFIX/J
Component/s: Build
Affects Version/s: 1.3.1
Fix Version/s: 1.3.2

Type: Improvement Priority: Default
Reporter: Saqib Rasul Assignee: Unassigned
Resolution: Fixed Votes: 0
Labels: None

Attachments: XML File build.xml     XML File build.xml     XML File build.xml     XML File build.xml     XML File module.xml    

 Description   

In order to make it easier to know what version of quickfixJ one is running i propose that the jars that are created should have the version of quickfixJ in their name. as in:
quickfixj-core-1.3.1.jar
looks better than
quickfixj-core.jar.

Another improvement i propose is that now that we break up the release jars into core and the fix-version-specific jars, we should also have a all-in-one-jar that contains everything. for deployment situations that dont care about fix versions and want a all-in-one jar they can deploy.

i can make the changes to the build files to implement these but i want to get agreement if this is a good idea or not.



 Comments   
Comment by Saqib Rasul [ 25/Mar/08 ]

for version 1.3.1 here is the module.xml the only change is on line 6 with the addition of this property:

<property name="quickfixj.version" value="1.3.1" />

Comment by Saqib Rasul [ 25/Mar/08 ]

the core/build.xml the changes here are in the jar target

Comment by Jörg Thönnes [ 25/Mar/08 ]

The all-in-one is probably a good idea.

Currently, just picking out one FIX version plus the core does not work since the DefaultMessageFactory
depends on all FIX versions.

Comment by Steve Bate [ 25/Mar/08 ]

I use a lot of open source products and my impression is that it's more common to not have the version numbers in the filename. I personally see advantages and disadvantages to both approaches and I don't have a strong personal preference. However, I probably won't change the current approach unless I'm convinced there is a clear benefit to the renaming.

In case you didn't know, you can determine the version of a quickfix-core.jar by executing it (e.g. "java -jar quickfix-core.jar").

I don't have a problem creating a quickfixj-all.jar.

As Joerg mentioned, there are issues with the message version dependencies. I think the issue DefaultMessageFactory can be solved by doing lazy creation of the version-specific message factories. The MessageCracker is another issue. However, this has been documented in other JIRA issues.

Comment by Saqib Rasul [ 25/Mar/08 ]

i am glad we agree on the all-in-one jar. you can see my creation of the all-in-one jar in the build.xml attached. if you like it, you may use it.

the advantages of the naming that i see are:

  • no extra step before knowing the version
  • the java -jar approach was introduced recently so it wont work for all and it not a 'standard' approach for finding out the version

the disadvantages that i see are:

  • people used to current files names will have to get used to another version
  • the java -jar works only for the quickfixj-core jar and not he message jars
  • if i download 2 versions of quickfixJ, the message-version-specific jars are named similarly and the only difference is an md5hash

i would also like to add that directory that the tar-gz (or zip) that is created from the sourceforge download should also have a version number in it so as to distinguish between version numbers.

Comment by Toli Kuznets [ 26/Mar/08 ]

I'd vote for having a version in the jar file as well.
We actually end up hosting all the QFJ jars on our Maven repository at http://repo.marketcetera.org/maven/quickfixj/ . Maven assumes that the jars have the version in them, so I would think most open-source projects are moving towards the "version-in-name" convention in the future.

Saqib, if you are using Maven, you can access QFJ off the Marketcetera repo if you follow the Maven instructions from http://www.quickfixj.org/quickfixj/usermanual/installation.html#build

Note that the docs are slightly outdated, you can grab versions 1.3.1 from there now.

Comment by Brad Harvey [ 26/Mar/08 ]

+1 for adding version to the jar name. It's a simple way to make version management of dependencies easier.

Comment by Steve Bate [ 26/Mar/08 ]

OK, I'll add the version numbers to the JAR file as well. I've scheduled this for 1.3.2. Thanks for the comments.

Comment by Saqib Rasul [ 26/Mar/08 ]

just want to add that we should also put a version number in the dir that gets un(g)ziped from the sourceforge download. for example

quickfixj-1.3.1-bin.tar.gz should untar/gunzip to a directory called 'quickfixj-1.3.1' and not 'quickfixj'

Comment by Saqib Rasul [ 24/Apr/08 ]

do you want a patch for this for the current trunk version of QuickfixJ? or for any of the branches?

Comment by Steve Bate [ 24/Apr/08 ]

A patch against the trunk or just the modified file (I can diff it myself) would be great. Thanks.

Comment by Saqib Rasul [ 04/Jun/08 ]

my apologies for the delay... i just got some time on hands and i will endeavour to get you the modified files this week.

Comment by Saqib Rasul [ 06/Jun/08 ]

here is a patch against the current trunk for this issue. i hope it is to your satisfaction. the files in question are:

$ svn status
M core/build.xml
M examples/build.xml
M build.xml

Generated at Sat Nov 23 07:23:02 UTC 2024 using JIRA 7.5.2#75007-sha1:9f5725bb824792b3230a5d8716f0c13e296a3cae.