On 12/12/2012, at 12:36 AM, Sébastien Cogneau wrote:

> I've updated the pull request.
> 
> Hope this helps.

Thanks for this. We'll apply it soon.

If you're interested in continuing to work on these plugins, I've updated the 
spec to reflect what I think we should tackle next, which is to extract a 
'distribution' plugin that is shared by the java library and application 
plugins.

The spec is here: 
https://github.com/gradle/gradle/blob/master/design-docs/building-and-packaging-applications-and-libraries.md

The next story is this: 
https://github.com/gradle/gradle/blob/master/design-docs/building-and-packaging-applications-and-libraries.md#introduce-a-basic-distribution-plugin

The stories that follow will incrementally change things to share more stuff 
between the java library, application and distribution plugins.

There's no publishing stories in the spec, yet, as we're still working through 
the design for this as part of the new publication DSL work.


> 
> Sébastien
> 
> 2012/12/3 Adam Murdoch <[email protected]>
> 
> On 03/12/2012, at 2:38 AM, Sébastien Cogneau wrote:
> 
>> Hi,
>> 
>> I'm agree, it would be better to rename the plug-in to 
>> 'jvm-library-distribution'.
>> Do you want me to modify the pull-request ?
> 
> Yes, please.
> 
>> 
>> I'm really interested in working on the next steps , is it possible ?
> 
> Absolutely. That would be excellent.
> 
>> If yes, how do you want to proceed ?
> 
> I think we should continue with the plan below. Step #1 overlaps quite a bit 
> with the publishing stuff we're currently doing for the 1.4 release, and it 
> might be tricky to coordinate things. We might skip to step #2 instead.
> 
> I'll update the spec soon.
> 
> 
>> 
>> Cheers,
>> 
>> Sébastien.
>> 
>> 
>> 2012/11/29 Adam Murdoch <[email protected]>
>> Hi,
>> 
>> We have a pull request queued up that adds a 'java-library' plugin: 
>> https://github.com/gradle/gradle/pull/101
>> 
>> The idea behind this plugin that it will build a distribution zip or tgz for 
>> a jvm based library, which you can use for distributing the library, 
>> generally as an alternative or complement to publishing the library to a 
>> repository somewhere.
>> 
>> We've held off applying this pull request while we sorted out some of the 
>> new publication stuff. I think we're now ready to add this plugin.
>> 
>> One issue is that the plugin id 'java-library' is a bit too general for what 
>> this plugin does, and we want to use 'java-library' for other purposes (see 
>> below), so I would propose renaming it to something like 
>> 'jvm-library-distribution' to reflect what it does.
>> 
>> Then, once added, we can (incrementally, of course):
>> 
>> 1. Add a 'java-library' plugin that declares that the project produces a 
>> Java library. This would be an opinionated plugin that defines a main Java 
>> library component. It would publish the component. There will be a base 
>> plugin that adds the capability for building Jvm library components.
>> 2. Extract a 'distribution' plugin out of the 'jvm-library-distribution' and 
>> 'application' plugins. This would be an opinionated plugin that defines a 
>> single distribution which contains all library and application components 
>> that the project produces. It would also publish the distribution. There 
>> will be a base plugin that adds the capability for building distributions 
>> from components.
>> 3. Deprecate and remove the 'jvm-library-distribution' plugin. You'd use the 
>> 'java-library' and 'distribution' plugins together instead.
>> 4. Extract a 'java-application' plugin out of the 'application' plugin. This 
>> would be an opinionated plugin that defines a main Java application 
>> component. It would publish the component. There will be a base plugin that 
>> adds the capability for building Jvm application components.
>> 5. Deprecate and remove the 'application' plugin. You'd use the 
>> 'java-application' and 'distribution' plugins together instead.
>> 6. Change the c++ plugins to define library and application components for 
>> the libraries and executables it creates. You could then use the 
>> 'distribution' plugin to bundle these things into a distribution.
>> 
>> Then we can do all kinds of interesting things:
>> 7. Add plugins to offer additional ways to package Java application 
>> components: executable fat jar, native executable, .app bundle, etc.
>> 8. Add an 'rpm' plugin that uses the meta-data for the library and 
>> application components to generate rpms for those components.
>> 9. Add a 'java-daemon' plugin that can take a jvm application component and 
>> package it as a daemon/service.
>> 
>> So, net result is:
>> 
>> apply plugin: 'java-library'
>> apply plugin: 'distribution'
>> 
>> Running 'gradle assemble' will build a .zip and .tgz containing the library 
>> Jar, the API documentation, the jars for the runtime dependencies, etc.
>> 
>> apply plugin: 'cpp-lib'
>> apply plugin: 'distribution'
>> 
>> Running 'gradle assemble' will build a .zip and .tgz containing all variants 
>> of the native library, plus the API docs, etc (or perhaps it builds a 
>> zip/tgz per variant).
>> 
>> apply plugin: 'scala-library'
>> apply plugin: 'distribution'
>> 
>> Running 'gradle assemble' will build a .zip and .tgz containing all variants 
>> of the library Jar, the API docs, the jars for runtime dependencies for each 
>> variant, etc.
>> 
>> Step #1 we need to do soon, to make progress on the publishing DSL. The 
>> other steps can happen whenever. I think we should apply the pull request as 
>> is, rename the plugin, and then do the remaining steps in the master branch.
>> 
>> 
>> --
>> Adam Murdoch
>> Gradle Co-founder
>> http://www.gradle.org
>> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
>> http://www.gradleware.com
>> 
>> 
> 
> 
> 
> --
> Adam Murdoch
> Gradle Co-founder
> http://www.gradle.org
> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
> http://www.gradleware.com
> 
> 


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com

Reply via email to