
Oliver contacted me with a request to split EchoPoint into core, google, jquery etc. so that users could pick and choose the jar files they wished to include in their project (I tried to reply to your mail a few times Oliver, but your mail server keeps rejecting that saying mailbox is unavailable). I personally prefer a single jar file (in fact I have been thinking of creating a echopoint-all.jar that will contain EchoPoint and all its dependencies in a single file). That said, I have no issues with creating a few separate jar files (easy enough to do in the build script) and make smaller files available for people who so inclined.
I would appreciate all thoughts and feedback.
Rakesh
I don't like EchoPoint's
I don't like EchoPoint's massive set of dependencies, so anything that makes that transparent to me is good (meaning one JAR is better to me).
Echopoint in modules
Hi,
I'am sorry that the Email server rejects your email address, but still thanks for starting the topic.
So the problem with echopoint in my eyes is that you get all or nothing and have a lot of dependencies. In our projects we are not always allowed to add any libraries we want. Thus we can not use echopoint at all (e.g. google depending libraries).
My proposal therefore is to split echopoint in modules related to their dependencies. Each module alone is much easier to maintain. This is similar to Tods echo3 module management (core, extras, file-transfer). It allows people to pick exactly the module they need and makes the dependencies transparent. It makes it also also easier to add new projects to echopoint. Overall modules their should be an echopoint root project able to create an "überjar" containing all projects and their dependencies.
Example:
\ echopoint |- etc (contains the echopoint version and stuff that is valid to all submodules) |- build (contains reusable ant scripts for any module sharing a certain structure) \- basic (depending on echo3 core, like HTMLLabel or the Progressbar) \- src \- main |- resources \- java |- test |- libs (the third party dependencies of this submodule) |- etc (contains sub module specific properties - may overwrite parent modules properties) build.xml (the build file for basic module uses the build scripts) |- charts (depending on google apis, like BarChart, LineChart, Meter) |- jquery (depending on jquery, like Clock, Flexigrid, DatePicker) build.xmlEach Module has its own dependencies and will become an artefact once built (e.g. a JAR file). Each module can be built independent and has a version defined by the root (echopoint).
Using a proper build system (ant, maven etc) makes handling the modules a piece of cake and is independent of any IDE. I suggest ANT, since its easy to maintain and very flexible. We developed the proposed kind of ant script based modularisation. So it can be used to handle echopoint as well.
Furthermore i suggest to depend on a released version of echo3 and not to hack and patch it inside echopoint. Out of my experience its not necessary since you can always copy, rename and modifiy core components.
So far what do you think?
Regards,
Oliver
I do not see any issues with
I do not see any issues with the proposed restructuring. We can also just generate the different jar files with the current system, since the various components are contained within their packages (and corresponding namespaces and directories for the client).
Why do you think we are using modified Echo libraries? AFAIK these are standard Echo builds with no modifications.
Another user had expressed some interest in moving to maven, since it handles dependencies in a cleaner and more universal way than ant. Another benefit of maven is that IDE's can load the project automatically off the pox.xml file. The downside is that it is hard to do anything that is not already part of the usual maven build system.
As regards the dependencies, I think most of the extra dependencies are for the tucana file upload component. If we separate that, then the dependencies will drop down. I think the rest of echopoint (including google, and jquery) do not have any java level dependencies outside of the core components.
Lets face it!
That are great news.
I know that echopoint never used any modified Echo libraries. I just wanted to state that it should be like this in future as well ;-).
For maven I totally agree with you. Maven is harder to handle than ANT if you are outside the maven-way. For this particular project I still vote first for ANT, second for Gradle and last for maven.
But we should of course take some lessons from maven. They apply to each module:
- defined structure (maven way = src and target)
- defined versions
- clear dependencies (lib folder)
- defined "tasks" (maven alike goals)
Okay so lets start! I suggest:
-----------------------------------
1. to branch the current head
2. separate the modules as proposed
3. add an ANT based build system to handle the modules (the #1 goal is a set of independent jars)
4. add some ANT magic to build an "Überjar" containing all modules (please define what should be included!)
5. Merge the branch into the head
6. I add the promised FlexiGrid, DatePicker and a KeyBinding component (right after the merge)
I also suggest that I will add the ANT build system, since we already use such one and it works fast and is rock solid and easy to maintain.
Since you already have the
Since you already have the target ant build system, we can stick with it. The dependencies from memory are:
1) core - xstream, also jdom if you include the util package.
2) jquery - core
3) google - core and xstream
4) tucana - core, xstream, commons, mime-util
5) style - unless I reverse the inheritance hierarchy - all the modules
6) test - all of above
I am no lawyer, but I think all the libraries may be packaged together into echopoint-all.jar - core, jquery, google, tucana, xstream, jdom, commons, mime-util.
Soon starting to branch
Hi,
I will soon start branching and adding the ant build system into it. Currently i do not have so much time because of my marriage. I will try my best. Is that okay for you?
Regards,
Oliver
No problem. I do not think
No problem. I do not think the repackaging is holding anything up.
Rakesh
New Branch "modular"
Hi,
i just created the new branch "modular" at https://echopoint.dev.java.net/svn/echopoint/branches/modular/
I will start soon to restructure the project, stay tuned.
Regards,
Oliver