I got tired of extra-complicated project development managers so far like maven, ant, phing & many many more… So as natural developer I’ve decided to create my own, at least to be used for my own ever growing code base
So here are some initial thoughts:
Goals:
- Dependencies management (modules, libraries, 3th party
contributions, git, svn, cvs)
- Development management (debug, release conditional builds)
- Deployment management (testing, packaging, install, release)
- Simple & flexible
– creation
– dependencies
– configuration (better without)
Basis example of project development upon given problem (project
exists because they solve problems):
1) create project
2) include dependencies
3) build
4) see
5) modify code (repeat 3 -> 5 until solution is found )
6) package (make library, executable, install)
7) distribute (upload the outputs, push to collaborative scm & etc.)
* all projects are modules, they depend on other modules. Libraries,
source code packs are modules. => Modules can contain other modules.
* every module has its own name space, no need of grouping them.
* several source code files can be easily called a module been ready
for compilation or even direct execution/usage
* having module based on other module libraries forms a project
solution or just solution. Every solution is a module also.
* the overall building of solution depends on its requirements
(modules) behind it. Building them is matter of implementation of
their distributions.
* one should be able to add easily extensions/plugins for solving
given particular task.
* development scripting (because to do the above steps scripts need to
be processed & been automated at some point)
Implementation paths:
- cross-technology api
- local/remote service (capable to be included within XMPP, ISS,
Tomcat servers) responsible to understand given client’s request &
perform the needed operations.
- local frontend client (CLI or other)
Project Data needed for Development(pdml):
<module uid=’org.pdml”>
<description> Project Development Markup Language parser library
</description>
<depend uid=’org.saxs.xml’ />
<module uid=’org.pdml.java’ />
<module uid=’org.pdml.php’ />
<module uid=’org.pdml.ruby />
</module>