--
You received this message because you are subscribed to the Google Groups "gradle-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gradle-dev+...@googlegroups.com.
To post to this group, send email to gradl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/0EF57C68-9567-46AC-B9D9-6B6C3B75581E%40gradleware.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/CAJnGkD4A0BuEAizizFk_bj1CWRHkdZ8bqrBO4bLmzESrfjc6Rw%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/CAPsC-PJ73D9EY15Bu8ti%3Dqhgtk6g_ZaybaUuA%2BL_VhNpe9MmXQ%40mail.gmail.com.
On 12 Feb 2015, at 1:44 pm, Andrew Oberstar <ajobe...@gmail.com> wrote:Overall, I like the idea of using the plugin infrastructure to provide the bootstrapping functionality. Two questions/comments:1. Assuming capabilities would be something like "android project" or "c++ library", there will likely be multiple plugins providing bootstrapping of the same capability. Any reason it couldn't just rely on plugin ids instead of capabilities?
Otherwise it would need to prompt with a list of candidate templates that provide the capability, right?
2. This still doesn't address how a plugin should bootstrap a project. There's definitely benefit in the flexibility of just allowing any old plugin to declare it supports bootstrapping. However, a lot of templating/bootstrapping use cases are pretty straightforward and are mostly (if not entirely) data based, rather than behavior based. To ease those use cases, it would be nice for the core to provide a structured approach to bootstrapping (without precluding wide-open plugins). It's possible structured approaches could come from the community, but I guess it depends on how this all fits together.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/CAJnGkD4A0BuEAizizFk_bj1CWRHkdZ8bqrBO4bLmzESrfjc6Rw%40mail.gmail.com.
On 12 Feb 2015, at 6:42 pm, Lóránt Pintér <lorant...@gmail.com> wrote:Hi,we also needed something like this, and after looking at existing bootstrappers like Yeoman and Giter8, ended up creating https://github.com/prezi/grub. That said, I’d be a lot happier if Gradle had built-in functionality for bootstrapping, and we could throw Grub out.A few random thoughts, based on our use of this tool:Bootstrapping should run from the command-line, and it should be simple for the end-user. Something along the lines of “gradle bootstrap give-me-a-typical-java-project”. If you need to first create a build.gradle first to create a new project, or supply a dozen parameters on the command-line, people will get confused.
Using plugins (Plugin<Bootstrap>?) for this sounds like a natural fit. I especially like the ability that I can apply one plugin from another.For our typical use-case at Prezi, this grouping of plugins would be very important. Our build users would always want to bootstrap via a single ‘umbrella' plugin (e.g. “com.prezi.myteam:my-team’s-usual-project-template:1.+”), which would apply other, more general bootstrap plugins (“org.gradle:javascript-bootstrap:1.7” etc.). This would also allow the umbrella plugin to pre-configure some conventions (e.g. it could pre-select the option in the JS bootstrapper to use the Mocha framework for testing, because in my team we always use Mocha).
Putting the bootstrap plugins on the plugin portal would be great for discoverability. In an enterprise environment we would also need to be able to put our internal bootstrap plugins on a similar internal portal.It would be great if bootstrapping didn’t stop at creating a new project from scratch, but you could alter existing ones as well. Adding more subprojects to an existing project, or adding more capabilities. Using Gradle here gives an advantage over other tools like Yeoman, because we can understand what is already available in an existing build via the tooling API. This makes it possible to add more nuanced changes, which is great. (Although serializing those changes back to, say, build.gradle could still be a challenge.) I can imagine things like “add a new widget to my Android app project” as well.
Resolving variables in file and folder names in the bootstrap template (as in “src/main/java/$packageName/App.java”, like Giter8 does) is a big time-saver, and it makes it a lot easier to find out what happens when a project is bootstrapped.Versioning templates is another benefit of using plugins for this, but the most usual use-case will be I guess to ask for the latest version of the template. Dynamic versions and defaulting to “+” would be a great way to solve this I think.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/1423726955879.61df8adc%40Nodemailer.
To unsubscribe from this group and stop receiving emails from it, send an email to gradle-dev+unsubscribe@googlegroups.com.
To post to this group, send email to gradl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/0EF57C68-9567-46AC-B9D9-6B6C3B75581E%40gradleware.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "gradle-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to gradle-dev+unsubscribe@googlegroups.com.
To post to this group, send email to gradl...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/gradle-dev/B8D164BED956C5439875951895CB4B2226BC4212%40CAFRFD1MSGUSRIA.ITServices.sbc.com.