On 31 July 2013 10:57, Xavier Ducrohet <x...@google.com> wrote: > Once I create new SoftwareComponents and Usage object, is there anything > in Gradle to display the list, their properties,etc... to make sure it's > all properly configured? >
You can access all added components via the project.components container. So you should be able to do: components.android.usages.each { println it.name println it.artifacts println it.dependencies } > On Tue, Jul 30, 2013 at 5:01 PM, Xavier Ducrohet <x...@google.com> wrote: > >> >> On Tue, Jul 30, 2013 at 4:47 PM, Daz DeBoer < >> darrell.deb...@gradleware.com> wrote: >> >>> On 30 July 2013 17:23, Xavier Ducrohet <x...@google.com> wrote: >>> >>>> Makes sense. Right now I do want to add support for it so I'm going to >>>> use the internal stuff. We are aware that this might mean we are only >>>> compatible with a given version of Gradle and this is fine pre-1.0 >>>> >>>> I'm also going to start creating components for each variants, but only >>>> add one candidate to the DefaultArtifactPublicationSet so this should work >>>> by default like the old publication. >>>> >>> >>> Are you planning to publish multiple variants to the same GAV >>> (publication), with variants differentiated by classifier? In that case, >>> I'm not sure why you wouldn't just create a single component, with multiple >>> artifacts. Each PublishArtifact can define a classifier, and all artifacts >>> will be published. >>> >> >> My variants can have different dependencies for libraries. >> >> I guess when uploading application packages, I could have a single >> component. However I'm also thinking about letting developers upload side >> files besides their app (for instance ProGuard mapping file). I guess that >> I could use the same classifier as the matching app with a different >> type/extension? >> >> >> >>>> Quick question: what's the name of the Usage instances used for? >>>> >>> >>> For Maven publication, it's not currently used. For ivy, it provides the >>> configuration that contains the published artifacts. The mapping of >>> SoftwareComponent/Usage => Maven/Ivy model is pretty brain-dead at the >>> moment, and we'd be very willing to extend enhance this with more use cases. >>> >>> >> Are you talking about org.gradle.api.artifacts.Configuration here? I >> noticed that in JavaLibrary, the returned Usage object is called "runtime". >> >> How is all of this related to inter-project dependencies by the way? >> Right now we use project.artifacts.add("default", someAbstractArchiveTask) >> for both the old publication stuff and this seems to work. >> When looking at the JavaPlugin I saw those two lines: >> >> >> project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(jarArtifact); >> project.getComponents().add(new JavaLibrary(jarArtifact, >> runtimeConfiguration.getAllDependencies())); >> >> The 2nd one makes sense to me when I see the 'from components.java' >> section of a publication sample. I've been wondering if the 2nd one was for >> inter-project dependencies, but it takes an artifact instead of a Usage >> object, so there's not associated dependencies? >> > > -- Darrell (Daz) DeBoer Principal Engineer, Gradleware http://www.gradleware.com