[QFJ-499] Modify build system to use Maven Created: 10/Jan/10 Updated: 02/Apr/15 Resolved: 09/Jun/14 |
|
Status: | Closed |
Project: | QuickFIX/J |
Component/s: | Build |
Affects Version/s: | None |
Fix Version/s: | 1.6.0 |
Type: | Task | Priority: | Major |
Reporter: | Steve Bate | Assignee: | amichair |
Resolution: | Fixed | Votes: | 12 |
Labels: | None |
Attachments: | codegenerator.zip quickfixj.zip | ||||||||||||||||||||
Issue Links: |
|
Description |
Things which have been done on the ant build in the meantime and which need to be considered:
|
Comments |
Comment by Toli Kuznets [ 19/Jan/10 ] |
Steve, |
Comment by Steve Bate [ 05/Apr/10 ] |
I've made changes to the project structure to make it more Maven-like. I've attempted a Maven conversion and have run into a couple of issues. The first issue is that our distribution preparation process is somewhat complex and not a great fit for Maven's assembly module. The other issue is that we cannot publish the QFJ libraries to the Maven central repository because we depend on some libraries (proxool 0.9.1 and Sleepycat JE) that are not in that repository. However, we could run our own repository on quickfixj.org to workaround that issue. In fact, we can still post QFJ to our own repository if we'd like, even without a Maven build. Another option is to use Ivy for dependency management and then generate the QFJ POMs from that tool. |
Comment by Sergey Ivanov [ 18/Apr/10 ] |
Steve, I am currently working in my spare time on a maven plugin for message source generation from a dictionary (I started by taking the code from MessageCodeGenerator and transforming it into a Maven2 mojo). Once it is completed, I shall be happy to contribute it to QuickFix/J project under your licence. It will (hopefully) make it easier to mavenise QuickFix/J build. |
Comment by Steve Bate [ 18/Apr/10 ] |
Sounds great. Thanks. |
Comment by Claudio Bantaloukas [ 14/Sep/10 ] |
I packaged the code generator as a maven project. Sources are from the QFJ 1.5.0 release. The main stumbling block is that the xslt engine cannot load resources directly so I had to copy paste the copyright info inside the xslt file. Apart from that, the code is an adaptation of the castor plugin. Once installed, it can be added to the pom with the following snippet <plugin> Of course the generated projects require proper qfj library dependencies but hey, it's a start! |
Comment by Claudio Bantaloukas [ 24/Jan/11 ] |
I have a working build that mirrors trunk under subversion branch Can someone help me test on a machine != mine? Thanks! |
Comment by Jim Scott [ 27/Apr/11 ] |
I am attaching everything that I have done to mavenize quickfixj. I have left some of the files for the different subprojects in place just to show where the files go, but I deleted most of them to not have a huge zip file. I would happily post my entire copy of the 1.5 (mavenized) code base if requested.
This mavenization does generate all artifacts as equivalent or better to what the current ant build generates. I say or better because certain things like the manifest file is customized within each jar. Just little things like that. The assembly that I built can be modified very simply to produce zip as well as tar.gz. This build also generates the source jars and javadocs to check into the maven artifact repository. So, anyone depending on the binary via maven will automatically pick up the source and javadocs. To generate the javadocs run -PRelease and to skip running tests add -DskipTests (buids quite fast without javadocs or tests running). If you want to force the build not to generate the code use -Dskip.exec=true All artifacts also have the proper dependencies in their pom's. e.g. if you only require fix 42, you can depend on the fix42 jar via the pom and it will automatically pull in fix41, fix40 and fix core. |
Comment by Steve Bate [ 03/May/11 ] |
Moved issue to 1.6.0 based on discussions from the mailing list. |
Comment by Andrei Pozolotin [ 06/May/11 ] |
Steve, Claudio: please consider using sonatype oss: for maven snapshot and release staging thank you Andrei. |
Comment by Andrei Pozolotin [ 06/May/11 ] |
please also consider conversion into osgi bundles: |
Comment by Claudio Bantaloukas [ 07/May/11 ] |
Andrei, I'd love to use sonatype but we currently depend on oracle's sleepycat packages. Is it possible to upload those too in sonatype? Please see this page for the full list of dependencies. If we can upload them it would be great... |
Comment by Andrei Pozolotin [ 07/May/11 ] |
Claudio: 1) yes it is possible to upload non-publicly available packages to sonatype oss; 2) in case of bdb, there is no need to; bdb is available from public repo: <repositories> <dependencies> Andrei. |
Comment by Andrei Pozolotin [ 07/May/11 ] |
http://www.oracle.com/technetwork/database/berkeleydb/downloads/maven-087630.html |
Comment by Andrei Pozolotin [ 07/May/11 ] |
http://search.maven.org/#search|ga|1|je |
Comment by Jim Scott [ 07/May/11 ] |
I have not been able to get to the oracle maven repo in quite a long time and this still doesn't seem to work .. If you notice in the pom I submitted I already have all the dependencies accounted for including sleepycat. This is in the central repository: |
Comment by Andy Flury [ 27/Jul/12 ] |
is there any time schedule for finishing the mavenization? Would be great to have QFJ available from maven central or sonatype oss |
Comment by Ryan Lea [ 07/Mar/13 ] |
+1. I would be more than happy to help out in any way to assist in this process as well. |
Comment by Christoph John [ 09/Dec/13 ] |
Hi, anyone of you guys willing to push this further? Thanks |
Comment by Claudio Bantaloukas [ 10/Dec/13 ] |
I'm afraid I cannot work on this right now, but if you have the time, feel free to check out the work I did on branch 499. Unfortunately it has not received attention in the last 3 years... The new url is: |
Comment by Christoph John [ 17/Feb/14 ] |
Hi Claudio, thanks for your contributions on this. I found it very useful. Will also check the changes done by Jim Scott. |
Comment by amichair [ 09/Jun/14 ] |
Thanks everyone for your contributions - I rebased Claudio's branch, modified and updated it, and added a bunch of further improvements, incorporating stuff from the other patches as well. This was done on the |