Spencer, thanks a lot for the samples.
I think it will be a good basis to create ours. Regards, Jefferson 2011/5/26 Spencer Allain <[email protected]> > Depending upon how much the upcoming ear plugin borrows from the existing > war plugin it may or may not suit your needs. > > Below is a pattern that we've used here with some success for creating ears > for multiple application servers (as different things need to be excluded). > > Consider projects A, B, and C where A depends upon B and C, yet A produces > a jar, wars and some ears. B and C both produce jars and wars. So A {jar, > wars, ears}, B {jar, wars}, C {jar, wars} and for dependencies A dependsOn B > and C, B depends upon C for jars. A depends upon B and C (and self A) wars > to bundle into larger scoped ear. > > There are obviously many different ways to go about this, such as creating > completely separate projects for each artifact, but that was not > particularly appealing for us. > > C/B_build.gradle > apply plugin: 'war' > > // Now undo much of what the war plugin auto-wires > jar.enabled = true > > configurations { > wars > } > > artifacts { > archives jar > wars war > } > > // Make sure war is no longer part of default artifacts > import org.gradle.api.internal.artifacts.publish.ArchivePublishArtifact; > > Configuration archivesConfig = > project.getConfigurations().getByName("archives") > Task warTask = project.getTasks().getByName("war") > for (PublishArtifact publishArtifact : archivesConfig.getAllArtifacts()) { > if (publishArtifact instanceof ArchivePublishArtifact) { > ArchivePublishArtifact archivePublishArtifact = > (ArchivePublishArtifact)publishArtifact; > if (archivePublishArtifact.getArchiveTask() == warTask) { > archivesConfig.removeArtifact(publishArtifact); > } > } > } > > A_gradle.build > // Pretty much the same as the build.gradle's for A and B, but additional > configuration for ears > > configurations { > ears > } > > dependencies { > ears project(path: ':B', configuration: 'wars') > ears project(path: ':C', configuration: 'wars') > } > > task ear(type: Jar) { > extension = 'ear' > > metaInf { from 'whatever/path/to/ear/META-INF' } > > from configurations.ears > from war.outputs.files > } > > This is very simplified, as we actually generate wars and ears for multiple > application servers and create additional "providedRuntime"-like > configurations for collecting things that need to be removed for specific > application servers as some are finicky. > > We're hoping that the restructuring of how artifacts are maintained and > published (and presumably dependency declaration) will make it so that > rather than have things get assigned to the default configuration/archives > artifact, that convention-based named variants get used instead. > > -Spencer > > --- On *Fri, 5/20/11, Jefferson Magno Solfarello <[email protected]>*wrote: > > > From: Jefferson Magno Solfarello <[email protected]> > Subject: [gradle-user] EAR plugin or sample? > To: [email protected] > Date: Friday, May 20, 2011, 1:04 PM > > > Hello, > > is there an EAR plugin? > > If not, does anyone have a sample? > > Thanks a lot, > > Jefferson > >
