On 7 May 2013 23:26, Steve Ebersole <steven.ebers...@gmail.com> wrote:
> I think that depends on the use cases you believe to be normal... > > Personally I only ever used it to add additional metadata to the POM. I > think this is a pretty normal use case, certainly for OSS projects. > Although I will say that the old DSL for doing that was much cleaner: > > { > organization { > name 'Hibernate.org' > url 'http://hibernate.org' > } > issueManagement { > system 'jira' > url > 'https://hibernate.atlassian.**net/browse/HHH<https://hibernate.atlassian.net/browse/HHH> > ' > } > ... > } > > versus now: > > { > def root = asNode(); > def org = root.appendNode( 'organization' ) > org.appendNode( 'name', 'Hibernate.org' ) > org.appendNode( 'url', 'http://hibernate.org' ) > def jira = root.appendNode( 'issueManagement' ) > jira.appendNode( 'system', 'jira' ) > jira.appendNode( 'url', > 'https://hibernate.atlassian.**net/browse/HHH<https://hibernate.atlassian.net/browse/HHH>' > ) > ... > } > > For the appending use case, I think access to just the XML "works". I > would prefer to see a better DSL for appending content, but thats just me > perhaps. > While it's a little hacky, Groovy gives a pretty nice way to do this: pom.withXml { asNode().children().last() + { organization { name 'Hibernate.org' url 'http://hibernate.org' } issueManagement { system 'jira' url 'https://hibernate.atlassian.**net/browse/HHH<https://hibernate.atlassian.net/browse/HHH> ' } } > I cannot speak to any of the other use cases (remapping dependencies, > etc). I am only touching the dependencies now because of this scope issue. > > > > > On Tue 07 May 2013 08:07:52 AM CDT, Hans Dockter wrote: > >> >> >> On Tue, May 7, 2013 at 2:50 PM, Steve Ebersole >> <steven.ebers...@gmail.com >> <mailto:steven.ebersole@gmail.**com<steven.ebers...@gmail.com>>> >> wrote: >> >> I agree that neither is correct and that this is yet another >> manifestation of bad Maven design. >> >> But... >> >> This is a POM. It is specifically a Maven artifact. In my >> opinion this needs to follow Maven conventions. That seems to be >> the way you are leaning as well given the plan you are describing >> below. >> >> >> I agree although people should be able to choose I guess. >> >> >> I'd really like to stick with the Publication DSL. It is much >> simpler/better. I updated my plugins to work with it. And I'd >> like to keep testing it for y'all. It is not clear from the >> documentation how one can use the pom.withXml approach to >> over-write values already in the POM from Gradle. I tried what >> seemed logical (though granted, brute force) to me: >> >> pom.withXml { >> asNode()... >> >> final String runtimeScope = '<scope>runtime</scope>'; >> final int replacementLength = runtimeScope.length(); >> final String compileScope = '<scope>compile</scope>'; >> final StringBuilder stringBuilder = asString(); >> int index = stringBuilder.indexOf( runtimeScope ); >> while ( index > -1 ) { >> stringBuilder.replace( index, index+replacementLength, >> compileScope ); >> index = stringBuilder.indexOf( runtimeScope ); >> } >> } >> >> It works (though quite ugly imo). >> >> >> BTW: With the wonderful old publication API you had access to the >> Maven project object directly ;). Do we think that this is not really >> necessary and having access to the XML representation is good enough? >> >> Hans >> >> >> >> On 05/05/2013 03:13 PM, Adam Murdoch wrote: >> >>> >>> On 03/05/2013, at 11:28 PM, Steve Ebersole <st...@hibernate.org >>> <mailto:st...@hibernate.org>> wrote: >>> >>> After updating Hibernate to use the new publishing stuff we now >>>> see all dependencies in the generated POM as 'runtime' whereas >>>> previously the generated pom used 'compile'. Is that expected? >>>> >>>> If so, I understand the logic behind using 'runtime' instead >>>> except for the fact of the footnote on Maven's own dependency >>>> primer[1[, I quote: >>>> " it is intended that this should be runtime scope instead, so >>>> that all compile dependencies must be explicitly listed - >>>> however, there is the case where the library you depend on >>>> extends a class from another library, forcing you to have >>>> available at compile time. For this reason, compile time >>>> dependencies remain as compile scope even when they are transitive." >>>> >>>> Given that this is generating something to explicitly plug in to >>>> Maven builds, I think 'compile' should still have been the choice. >>>> >>> >>> The problem is that both choices are wrong. Some of the things >>> you compile against form part of your API, and should be made >>> available to a consumer when they are compiling against your >>> component. And some of the things you compile against form part >>> of your private implementation, and should not be made available >>> to a consumer at compile time. >>> >>> Our plan is to add a mechanism that allows you to declare the >>> dependencies of your API. These will be made available to both >>> you and your consumers at compile time. When you're publishing to >>> Maven, these will end up in the `compile` scope. Everything else >>> will end up in the `runtime` scope. >>> >>> There will also be a DSL on the publication object for messing >>> with the scopes, if you don't like whatever the defaults happen >>> to be. We've done this for the artefacts of the publication, but >>> haven't tackled it for the scopes and dependencies yet. >>> >>> >>>> [1] >>>> http://maven.apache.org/**guides/introduction/** >>>> introduction-to-dependency-**mechanism.html<http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html> >>>> >>>> >>>> On Tue 16 Apr 2013 06:11:54 PM CDT, Steve Ebersole wrote: >>>> >>>>> That plugin code on master works. I just integrated it into >>>>> Hibernate >>>>> build and updated Hibernate to use this Publication DSL and was >>>>> able >>>>> to perform a publish! >>>>> >>>>> In terms of designing a generic solution, not sure how much help I >>>>> will be. Gradle has moved on dramatically from the last time I was >>>>> "in the code". But I do think the >>>>> org.hibernate.build.gradle.**publish.auth.maven.**Credentials/** >>>>> CredentialsProvider/**CredentialsProviderRegistry >>>>> stuff is pretty generic solution for managing credentials. >>>>> But I'd >>>>> not really be sure the best way to tie it in to Gradle to apply >>>>> credentials to "things" that need authentication. >>>>> >>>>> Anyway, I'll be pushing (ahem, *publishing*) a 2.0.0 release of >>>>> this >>>>> plugin later today that will support its feature set against the >>>>> Publication DSL. >>>>> >>>>> Thanks to Luke, Daz and Adam for all the help getting me on the >>>>> right >>>>> path there! >>>>> >>>>> >>>>> On Tue 16 Apr 2013 04:19:41 PM CDT, Adam Murdoch wrote: >>>>> >>>>>> >>>>>> On 16/04/2013, at 10:41 PM, Steve Ebersole >>>>>> <st...@hibernate.org <mailto:st...@hibernate.org> >>>>>> <mailto:st...@hibernate.org>> wrote: >>>>>> >>>>>> Maybe an even better question... >>>>>>> >>>>>>> This upload credential plugin is really in my opinion a work >>>>>>> around >>>>>>> for the fact that Gradle has no built-in support for externalized >>>>>>> credential declaration. As the developer of an OSS project, >>>>>>> it is >>>>>>> utterly impossible for me to put my username/password >>>>>>> directly into >>>>>>> my build scripts. >>>>>>> >>>>>>> While forcing each project to define username/password project >>>>>>> variables and do the whole hasProperty checking stuff >>>>>>> "works", it is >>>>>>> (again in my opinion) not ideal. >>>>>>> >>>>>> >>>>>> Absolutely. I agree with this. >>>>>> >>>>>> >>>>>>> So... Is there any externalized credential management in >>>>>>> place or >>>>>>> planned? Pretty sure there is nothing in place as of now. Is >>>>>>> anything of the sort planned? >>>>>>> >>>>>> >>>>>> It's planned. Just a matter of finding the time. As always, if >>>>>> someone >>>>>> from the community is interested in helping out with this, >>>>>> we'd really >>>>>> appreciate it. One place to start would be to get Steve's plugin >>>>>> merged into Gradle and we can evolve it from there. >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue 16 Apr 2013 07:30:57 AM CDT, Steve Ebersole wrote: >>>>>>> >>>>>>>> Sigh. Daz mentioned that credentials get copied from the >>>>>>>> upload repo >>>>>>>> definitions. >>>>>>>> >>>>>>>> Look, I just want to know what I need to do in order to >>>>>>>> apply a set of >>>>>>>> credentials to a maven repository to be used for upload. Is >>>>>>>> that >>>>>>>> possible? If so how? Been asking that for almost 2 weeks >>>>>>>> now ;) >>>>>>>> >>>>>>>> P.S. I am also not seeing a way to define a split between >>>>>>>> "production" and "snapshot" repo urls for publishing the way >>>>>>>> we used >>>>>>>> to be able to do with >>>>>>>> uploadArchives.repositories.**mavenDeployer. Is >>>>>>>> that also no longer supported? If not, I guess that is >>>>>>>> something I >>>>>>>> need to handle "manually" in the script to conditionally set >>>>>>>> the url? >>>>>>>> >>>>>>>> >>>>>>>> On Tue 16 Apr 2013 07:25:04 AM CDT, Luke Daley wrote: >>>>>>>> >>>>>>>>> >>>>>>>>> On 16/04/2013, at 1:19 PM, Steve Ebersole >>>>>>>>> <st...@hibernate.org <mailto:st...@hibernate.org> >>>>>>>>> <mailto:st...@hibernate.org>> wrote: >>>>>>>>> >>>>>>>>> So am I understanding that the only way to get this (applying >>>>>>>>>> "publish repo" credentials) is to add credentials to a >>>>>>>>>> MavenArtifactRepository? >>>>>>>>>> >>>>>>>>>> What I am not understanding is what to do in the >>>>>>>>>> (seemingly normal) >>>>>>>>>> use case where the publish repo is not an artifact >>>>>>>>>> (download) repo. >>>>>>>>>> >>>>>>>>> >>>>>>>>> The set of consumption repositories is a different set to the >>>>>>>>> publication repositories. >>>>>>>>> >>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Sat 06 Apr 2013 08:47:15 PM CDT, Daz DeBoer wrote: >>>>>>>>>> >>>>>>>>>>> If you didn't find it, the DSL docs for the Publishing >>>>>>>>>>> Extension >>>>>>>>>>> and >>>>>>>>>>> related model elements might be useful: >>>>>>>>>>> http://www.gradle.org/docs/**nightly/dsl/org.gradle.api.** >>>>>>>>>>> publish.PublishingExtension.**html<http://www.gradle.org/docs/nightly/dsl/org.gradle.api.publish.PublishingExtension.html> >>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> For some classes (eg PublicationContainer) the javadoc is >>>>>>>>>>> probably >>>>>>>>>>> more useful than the DSL reference (click the "API >>>>>>>>>>> Documentation" >>>>>>>>>>> link >>>>>>>>>>> from the DSL page). >>>>>>>>>>> >>>>>>>>>>> Other than that, the best way to understand what's going >>>>>>>>>>> on is to >>>>>>>>>>> consult the sources. >>>>>>>>>>> >>>>>>>>>>> One thing that is not well documented is the new, >>>>>>>>>>> experimental >>>>>>>>>>> support >>>>>>>>>>> for deferred configuration that is leveraged by the >>>>>>>>>>> PublishingExtension. This extension is a {@link >>>>>>>>>>> org.gradle.api.plugins.**DeferredConfigurable} model >>>>>>>>>>> element, meaning >>>>>>>>>>> that extension will not be configured until it is first >>>>>>>>>>> accessed in >>>>>>>>>>> the build. So any configuration blocks are not executed until >>>>>>>>>>> either: >>>>>>>>>>> >>>>>>>>>>> 1. The project is about to execute >>>>>>>>>>> or >>>>>>>>>>> 2. The publishing extension is referenced as an instance, as >>>>>>>>>>> opposed >>>>>>>>>>> to a configuration closure. ie: >>>>>>>>>>> publishing.publications { ... } >>>>>>>>>>> publishing.repositories.maven { ... } >>>>>>>>>>> You can read the rationale behind deferred configuration >>>>>>>>>>> in the >>>>>>>>>>> design >>>>>>>>>>> doc: >>>>>>>>>>> https://github.com/gradle/**gradle/blob/master/design-** >>>>>>>>>>> docs/lazy-configuration.md<https://github.com/gradle/gradle/blob/master/design-docs/lazy-configuration.md> >>>>>>>>>>> . >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> We're interested in feedback and ideas of how we can make >>>>>>>>>>> this >>>>>>>>>>> clearer. >>>>>>>>>>> >>>>>>>>>>> If you were not aware of this, it's quite possible that >>>>>>>>>>> you were >>>>>>>>>>> causing the publishing extension to be configured early >>>>>>>>>>> which could >>>>>>>>>>> lead to hard-to-understand behaviour. >>>>>>>>>>> >>>>>>>>>>> I'm happy to help get things working, do you have some >>>>>>>>>>> code to >>>>>>>>>>> share? >>>>>>>>>>> >>>>>>>>>>> cheers >>>>>>>>>>> Daz >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 5 April 2013 15:47, Steve Ebersole >>>>>>>>>>> <st...@hibernate.org <mailto:st...@hibernate.org> >>>>>>>>>>> <mailto:st...@hibernate.org> >>>>>>>>>>> <mailto:st...@hibernate.org>> wrote: >>>>>>>>>>> >>>>>>>>>>> I realize that this is an incubating feature, but given the >>>>>>>>>>> current documentation I am really not able to get this >>>>>>>>>>> to work. >>>>>>>>>>> It works if I have something simple (no pom >>>>>>>>>>> customization, no >>>>>>>>>>> snapshot/releases repository distinction, etc). Is >>>>>>>>>>> there some >>>>>>>>>>> better documentation I shuld look at rather than >>>>>>>>>>> >>>>>>>>>>> http://www.gradle.org/docs/__** >>>>>>>>>>> current/userguide/publishing__**_maven.html<http://www.gradle.org/docs/__current/userguide/publishing___maven.html> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> <http://www.gradle.org/docs/**current/userguide/publishing_* >>>>>>>>>>> *maven.html<http://www.gradle.org/docs/current/userguide/publishing_maven.html> >>>>>>>>>>> > >>>>>>>>>>> >>>>>>>>>>> and the dsl docs for MavenPom/MavenPublication? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri 05 Apr 2013 02:50:42 PM CDT, Steve Ebersole wrote: >>>>>>>>>>> >>>>>>>>>>> Hey Daz, >>>>>>>>>>> >>>>>>>>>>> The "upload auth" plugin[1] reads credentials from >>>>>>>>>>> maven >>>>>>>>>>> settings.xml >>>>>>>>>>> etc and applies them to any same-named repositories >>>>>>>>>>> referenced >>>>>>>>>>> in a >>>>>>>>>>> Gradle build through an Upload task. So, as I >>>>>>>>>>> understand >>>>>>>>>>> it, that >>>>>>>>>>> would not apply here. >>>>>>>>>>> >>>>>>>>>>> Applying the credentials to the resolution repos >>>>>>>>>>> would be a >>>>>>>>>>> good thing >>>>>>>>>>> too. >>>>>>>>>>> >>>>>>>>>>> [1] >>>>>>>>>>> >>>>>>>>>>> https://github.com/sebersole/_**_gradle-upload-auth-plugin<https://github.com/sebersole/__gradle-upload-auth-plugin> >>>>>>>>>>> <https://github.com/sebersole/** >>>>>>>>>>> gradle-upload-auth-plugin<https://github.com/sebersole/gradle-upload-auth-plugin> >>>>>>>>>>> > >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Fri 05 Apr 2013 02:21:07 PM CDT, Daz DeBoer wrote: >>>>>>>>>>> >>>>>>>>>>> On 5 April 2013 07:16, Steve Ebersole >>>>>>>>>>> <st...@hibernate.org <mailto:st...@hibernate.org> >>>>>>>>>>> <mailto:st...@hibernate.org> >>>>>>>>>>> <mailto:st...@hibernate.org >>>>>>>>>>> <mailto:st...@hibernate.org>>> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> I am just upgrading Hibernate to Gradle 1.5 >>>>>>>>>>> and am >>>>>>>>>>> reading about >>>>>>>>>>> the new publications stuff. I really like the >>>>>>>>>>> new DSL >>>>>>>>>>> much, much >>>>>>>>>>> better. >>>>>>>>>>> >>>>>>>>>>> I did have one question though that was not >>>>>>>>>>> addressed >>>>>>>>>>> in the docs. >>>>>>>>>>> For the old style of "uploading" I had >>>>>>>>>>> developed a >>>>>>>>>>> plugin that >>>>>>>>>>> provided authorization based on users local >>>>>>>>>>> Maven >>>>>>>>>>> install. From >>>>>>>>>>> my recollection the intent in the new maven >>>>>>>>>>> publication code was >>>>>>>>>>> to provide this behavior out-of-the-box. >>>>>>>>>>> So I am >>>>>>>>>>> curious if that >>>>>>>>>>> code ever made it into the >>>>>>>>>>> MavenArtifactRepository/____**MavenPublication >>>>>>>>>>> code. Or >>>>>>>>>>> do I need to >>>>>>>>>>> update my gradle-upload-auth-plugin to handle >>>>>>>>>>> this new >>>>>>>>>>> API? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> The new Publication support copies the >>>>>>>>>>> credentials from >>>>>>>>>>> the >>>>>>>>>>> MavenArtifactRepository (see the poorly named >>>>>>>>>>> >>>>>>>>>>> org.gradle.api.publish.maven._**_internal.publisher.__** >>>>>>>>>>> MavenDeployerConfigurer). >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> So any plugin code that you use to add >>>>>>>>>>> credentials to >>>>>>>>>>> maven >>>>>>>>>>> repositories used for resolution should also >>>>>>>>>>> work for >>>>>>>>>>> publication. >>>>>>>>>>> -- >>>>>>>>>>> Darrell (Daz) DeBoer >>>>>>>>>>> Principal Engineer, Gradleware >>>>>>>>>>> http://www.gradleware.com <http://www.gradleware.com/> >>>>>>>>>>> Join us at the Gradle Summit 2013, June 13th >>>>>>>>>>> and 14th in >>>>>>>>>>> Santa Clara, >>>>>>>>>>> CA: http://www.gradlesummit.com >>>>>>>>>>> <http://www.gradlesummit.com/> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Darrell (Daz) DeBoer >>>>>>>>>>> Principal Engineer, Gradleware >>>>>>>>>>> http://www.gradleware.com <http://www.gradleware.com/> >>>>>>>>>>> Join us at the Gradle Summit 2013, June 13th and 14th in >>>>>>>>>>> Santa >>>>>>>>>>> Clara, >>>>>>>>>>> CA: http://www.gradlesummit.com >>>>>>>>>>> <http://www.gradlesummit.com/> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> ------------------------------** >>>>>>>>>> ------------------------------**--------- >>>>>>>>>> >>>>>>>>>> To unsubscribe from this list, please visit: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> http://xircles.codehaus.org/**manage_email<http://xircles.codehaus.org/manage_email> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> ------------------------------**------------------------------** >>>>>>> --------- >>>>>>> To unsubscribe from this list, please visit: >>>>>>> >>>>>>> >>>>>>> http://xircles.codehaus.org/**manage_email<http://xircles.codehaus.org/manage_email> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> -- >>>>>> Adam Murdoch >>>>>> Gradle Co-founder >>>>>> http://www.gradle.org >>>>>> VP of Engineering, Gradleware Inc. - Gradle Training, Support, >>>>>> Consulting >>>>>> http://www.gradleware.com >>>>>> >>>>>> Join us at the Gradle Summit 2013, June 13th and 14th in Santa >>>>>> Clara, >>>>>> CA: http://www.gradlesummit.com >>>>>> >>>>>> >>> >>> -- >>> Adam Murdoch >>> Gradle Co-founder >>> http://www.gradle.org >>> VP of Engineering, Gradleware Inc. - Gradle Training, >>> Support, Consulting >>> http://www.gradleware.com >>> >>> Join us at the Gradle Summit 2013, June 13th and 14th in Santa >>> Clara, CA: http://www.gradlesummit.com >>> >>> >> >> > ------------------------------**------------------------------**--------- > To unsubscribe from this list, please visit: > > > http://xircles.codehaus.org/**manage_email<http://xircles.codehaus.org/manage_email> > > > -- Darrell (Daz) DeBoer Principal Engineer, Gradleware http://www.gradleware.com Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA: http://www.gradlesummit.com