adept-dm / adept

Adept - the predictable dependency management system
171 stars 10 forks source link

Multi Build Systems / Multi Repo Builds #26

Closed sirinath closed 10 years ago

sirinath commented 10 years ago

Hi,

Say if I have project A in SBT, project B on Maven, C on Gradle, D on Buildr, ... I while the projects are hosted on GIT, Hg, Bazaar, etc. It will be nice to be able to create a projects say SuperProject which uses all this by pointing to the relevant repos' hash / tag / etc. then get the build script evoke the build tool and cache the artifacts without having to build separately or use output builds of the subprojects.

Also generate build scripts for SuperProject to integrated as a sub project into other build systems by generating the Maven, Gradle, SBT files and plugins.

Suminda

freekh commented 10 years ago

I am not a 100% sure I understand so let me try to paraphrase it and you can tell me if I understood correctly: If one has multiple projects in different build tools and they all use Adept, it should be easy to create a super project in a build tool that that uses the published artifacts (and required dependencies) if that build tool also uses Adept.

My answer to this is that it shhould definitely be possible and much simpler than if each of the build tools where to use different dependency managers.

Note that Adept is only a dependeny manager, it does not build a project. As I said though sharing dependency metadata between different build tools should be trivial if they use the same dependency manager.

Suminda Dharmasena notifications@github.com wrote:

Hi,

Say if I have project A in SBT, project B on Maven, C on Gradle, D on Buildr, ... I while the projects are hosted on GIT, Hg, Bazaar, etc. It will be nice to be able to create a projects say SuperProject which uses all this by pointing to the relevant repos' hash / tag / etc. then get the build script evoke the build tool and cache the artifacts without having to build separately or use output builds of the subprojects.

Also generate build scripts for SuperProject to integrated as a sub project into other build systems by generating the Maven, Gradle, SBT files and plugins.

Suminda


Reply to this email directly or view it on GitHub: https://github.com/adept-dm/adept/issues/26

Sent from my Android device with K-9 Mail. Please excuse my brevity.

freekh commented 10 years ago

I should also mention that adept has moved to https://github.com/adept-dm/adept

You have great questions thiugh, and I think it would be great if we can continue to discuss them. Perhaps you want to post then on the mailing list where the rest of the community also can see them? It is here: https://github.com/adept-dm/adept

We also have spec of our model which is here: https://docs.google.com/document/d/1xU9m2zxva2eKhiXVYYqjmZieaWPJY0mDbEmZ_pE5P5c/edit?usp=sharing

Suminda Dharmasena notifications@github.com wrote:

Hi,

Say if I have project A in SBT, project B on Maven, C on Gradle, D on Buildr, ... I while the projects are hosted on GIT, Hg, Bazaar, etc. It will be nice to be able to create a projects say SuperProject which uses all this by pointing to the relevant repos' hash / tag / etc. then get the build script evoke the build tool and cache the artifacts without having to build separately or use output builds of the subprojects.

Also generate build scripts for SuperProject to integrated as a sub project into other build systems by generating the Maven, Gradle, SBT files and plugins.

Suminda


Reply to this email directly or view it on GitHub: https://github.com/adept-dm/adept/issues/26

Sent from my Android device with K-9 Mail. Please excuse my brevity.

sirinath commented 10 years ago

Sure will do.

sirinath commented 10 years ago

BTW, I do not think the pure dependency management route will work. You will need some build and task management capabilities also with the ability to work with existing build management / dependency management / CI / Configuration Management systems. Look at Gradle, Buildr, Ivy, Ant, Maven, SBT, SBuild, Psake and try to get some of the best features into Adept with regard to build tools. Adept will need a way to represent a task or build management idiom in its own way and the ability to delegate this to an embedded instance of a build management system. Also ability to talk with different CIs need to be considered. Again so that the user need not learn different idioms Adept can has its own way to represent this.

With regard to interop Adept must be able to generate build scripts targeted to the relevant build management system and any plugins which will execute tasks which cannot be handled by the particular build management system.

Another interesting application is that Aspt can be a Glue where you can use multiple build tools to play at the strength of each tool. You can run some tasks in Buildr, some in Gradle, some in something else.

Also ability to integrate with different version control systems for automations and also ability to have dependencies being checked out and build in the fly without having to rely on published artifacts.