On 31/07/2013, at 1:01 AM, 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.

Which rules out the classifier approach.

> 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?

This is unlikely to work. There are no clear rules on what should happen here. 

My experience is that type/extension do not contribute to an artifact's 
identity. That is, you can't have an artifact with the same 
(name,group,version,classifier) but different type/extension. I've not tried 
this with Gradle, but have with other Maven Repository tooling and it's not 
worked.

> 
> 
> 
>>> 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?

-- 
Luke Daley
Principal Engineer, Gradleware 
http://gradleware.com


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to