On 7 May 2013 23:07, Hans Dockter <hans.dock...@gradleware.com> wrote:
> > > On Tue, May 7, 2013 at 2:50 PM, Steve Ebersole > <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? > No, we don't think that it's good enough. It simply makes it possible to do things that we haven't yet made it convenient to do. > > Hans > > >> >> On 05/05/2013 03:13 PM, Adam Murdoch wrote: >> >> >> On 03/05/2013, at 11:28 PM, Steve Ebersole <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 >> >> >> 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 <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 <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 >> . >> >> >> 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 >> . >> >> >> 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 <st...@hibernate.org>> >> <mailto:st...@hibernate.org <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> >> >> 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> >> >> >> 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 <st...@hibernate.org>> >> <mailto:st...@hibernate.org <st...@hibernate.org> >> <mailto:st...@hibernate.org <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 >> >> >> >> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> 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 >> >> >> > -- 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