On Nov 9, 2009, at 6:32 AM, Steve Ebersole wrote: > Here are the exact steps I need: > 1) Grab all the subprojects and combine the contents of their jar > artifacts into a new jar artifact. > 2) Take that "uber jar", transitive dependencies, sources and > documentation and create the TGZ & ZIP archives > > It sounds like, for now, you are saying I will in fact need to stage the > archive contents (or duplicate the "copy spec" definition) to create the > two archives. Am I reading that correctly?
Adam has yesterday enhanced the archive API. The from clause of a copySpec now accepts a copySpec. And a project provides a copySpec factory. See thread: Only bundle sub-project jars in WAR -not transitive depencies - Hans -- Hans Dockter Gradle Project Manager http://www.gradle.org > > Also I was curious whether your approach below wrt defining 'distLibs' > would cause all the referenced subprojects to be built all the time? > > On Mon, 2009-11-09 at 10:02 +1100, Adam Murdoch wrote: >> >> Steve Ebersole wrote: >>> I am trying to figure out the best way to create my distribution against >>> a multi-project build. Two specific things I am unsure about: >>> >>> 1) I need to write out multiple distribution formats (ok 2 : zip and >>> tgz) but the contents will remain the same in each format. So obviously >>> I would like to define the source for these distribution archives just >>> once. The only thing I could think of was to manually create a >>> CopySpec, configure it appropriately and then manually call the Zip and >>> Tar >> >> This is pretty much the plan, but it's not quite implemented in trunk >> yet. It might work something like this: >> >> 1. allow the CopySpec for a task to be included in the CopySpec for another: >> >> task distZip(type: Zip) { >> from 'some-dir' >> include '...' >> .... >> } >> >> task DistTgz(type: Tar) { >> // Use the spec from distZip task >> from distZip.rootSpec >> compression = Compression.GZIP >> } >> >> >> 2. possibly provide some factory method for a copy spec: >> >> def distContents = copySpec { >> from 'some-dir' >> ... >> } >> >> task distZip(type: Zip) { >> from distContents >> } >> >> task distTgz(type: Tar) { >> from distContents >> compression = Compression.GZIP >> } >> >>> (does this only create the tar? is there an option to have it >>> create the gz?) >>> >> >> You use the compression property of the Tar task. >> >>> 2) I need the CopySpec, however it gets defined, to include stuff from >>> the subprojects. Specifically the artifact produced by the subproject >>> and its dependencies. >>> >> >> For the Gradle build, we use project dependencies for this, as we also >> want the transitive runtime dependencies. For example: >> >> configurations { >> distLibs >> } >> >> dependencies { >> distLibs project(path: ':subproject1'), project(':subproject2') >> } >> >> task distZip(type: Zip) { >> into('lib') { >> from configurations.distLibs >> } >> } >> >> This has the advantage that it drags in all the runtime jars, and the >> task dependencies are all automatically wired up for you. >> >> There are other ways of achieving similar things, depending on what you >> need. >> >> > -- > Steve Ebersole <[email protected]> > Hibernate.org > > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email
