Split axon-core into multiple modules

Hey all,
I would like to discuss a little bit about organization of Axon source base.

My main concern is axon-core module which contains in fact all things starting from JPA, quartz scheduling and spring namespace handlers. This causes a freak pom.xml with optional dependencies which are, in fact, non optional if you want to use JPA store. My proposal in this case is to extract all interfaces to axon-api module. Keep quartz support separate from core and depend only on the API, same for JPA stores which are mainly linked to spring-orm.

Is there any particular reason why all these things are keept in core? This few modules will clean up a structure and modularize Axon.

Cheers,
Lukasz

Hi Łukasz,

you’ve go a very valid point here. The reason most of it is in a single jar is mostly historical. I’ve been thinking about a separation of api and impl for a while.

Extracting a core api shouldn’t be too hard. But when it comes to separating the implementation into separate components, there are many possibilities. There needs to be a balance between component size and the number of dependencies one needs to configure to get axon working.

Suggestions are most welcome.
Cheers,

Allard

I do agree that hardest part will be moving around implementation classes which may have inner dependencies to something which is shared. I asked about souch thing because we are running axon framework under OSGi. We are happy to push back some of these things, however it’s scary to mess in monolytic module souch axon-core. We have done some integrations around which could be donated to project. Now we are wrapping axon in bundle, but the destination we would love to have is to make axon itself an OSGi ready solution.
Last week I spent working on blueprint namespace handler which allows to deploy axon without Spring under Karaf, and this is another part we would like to donate.

Cheers,
Lukasz

W dniu piątek, 23 sierpnia 2013 13:59:39 UTC+2 użytkownik Allard Buijze napisał:

Hi Łukasz,

A while ago, I had a discussion with Luca on this mailing list about how to make the Axon artifacts OSGi compatible. It’s not much work and will likely be implemented in 2.1.

Your work on the blueprint namespace handler sounds really interesting. As soon as you have something to show, please let me know.

Cheers,

Allard