@@ -5,8 +5,8 @@ apply plugin: 'signing'
55// Java / publishing
66
77java {
8- // include javadoc and sources jar in the Java component
9- // - classes jar included by default
8+ // Configure the Java "software component" to include javadoc and sources jars in addition to the classes jar.
9+ // Ultimately, this component is what makes up the publication for this project.
1010 withJavadocJar()
1111 withSourcesJar()
1212}
@@ -36,7 +36,7 @@ javadoc {
3636
3737publishing {
3838 publications {
39- publishedArtifacts( MavenPublication ) {
39+ register( " publishedArtifacts " , MavenPublication ) {
4040 from components. java
4141
4242 pom {
@@ -78,35 +78,39 @@ publishing {
7878}
7979
8080
81- // signing
81+ // Signing
8282
8383var signingExtension = project. getExtensions(). getByType(SigningExtension ) as SigningExtension
8484
85- // create a `signPublications` "grouping" task which will execute all Sign tasks
86- def signPublicationsTask = tasks. register(' signPublications' )
85+ def signPublicationsTask = tasks. register(' signPublications' ) {
86+ description " Grouping task which executes all Sign tasks"
87+ dependsOn tasks. withType( Sign )
88+ }
89+
8790tasks. named( " publishPublishedArtifactsPublicationToSonatypeRepository" ) {
91+ // publishing depends on signing
8892 dependsOn signPublicationsTask
8993}
9094
9195gradle. taskGraph. whenReady { TaskExecutionGraph graph ->
9296 boolean wasSigningRequested = false
9397 boolean wasPublishingRequested = false
94- List<Sign > signingTasks = []
9598
9699 graph. allTasks. each {task ->
97- logger. lifecycle( " Checking task : $task " )
98100 if ( task instanceof Sign ) {
99- logger. lifecycle( " - Task is Sign" )
100- signingTasks. add( task )
101101 wasSigningRequested = true
102102 }
103103 else if ( task instanceof PublishToMavenRepository ) {
104- logger. lifecycle( " - Task is PublishToMavenRepository" )
105104 wasPublishingRequested = true
106105 }
107106 }
108107
109108 if ( wasPublishingRequested ) {
109+ def publishUser = resolvePublishUser()
110+ def publishPass = resolvePublishPass()
111+ if ( publishUser == null || publishPass == null ) {
112+ throw new RuntimeException ( " Cannot perform publishing to OSSRH without credentials." )
113+ }
110114 logger. lifecycle " Publishing groupId: '" + project. group + " ', version: '" + project. version + " '"
111115 }
112116
@@ -119,14 +123,47 @@ gradle.taskGraph.whenReady { TaskExecutionGraph graph ->
119123 var signingPassword = resolveSigningPassphrase()
120124 signingExtension. useInMemoryPgpKeys( signingKey, signingPassword )
121125 signingExtension. sign publishing. publications. publishedArtifacts
122-
123- signPublicationsTask. get(). dependsOn( signingTasks )
124126 }
125127 else {
126128 // signing was not explicitly requested and we are not publishing to OSSRH,
127129 // - disable all Sign tasks
128- signingTasks. each { enabled = false }
130+ tasks. withType( Sign ). each { enabled = false }
131+ }
132+ }
133+
134+ String resolvePublishUser () {
135+ var envVar = System . getenv(). get( " ORG_GRADLE_PROJECT_sonatypeUsername" )
136+ if ( envVar != null ) {
137+ return envVar
138+ }
139+
140+ def projectProp = projectPropOrNull( " sonatypeUsername" )
141+ if ( projectProp != null ) {
142+ return projectProp
143+ }
144+
145+ return null
146+ }
147+
148+ String resolvePublishPass () {
149+ var envVar = System . getenv(). get( " ORG_GRADLE_PROJECT_sonatypePassword" )
150+ if ( envVar != null ) {
151+ return envVar
152+ }
153+
154+ def projectProp = projectPropOrNull( " sonatypePassword" )
155+ if ( projectProp != null ) {
156+ return projectProp
157+ }
158+
159+ return null
160+ }
161+
162+ String projectPropOrNull (String name ) {
163+ if ( project. hasProperty( name ) ) {
164+ return project. findProperty( name )
129165 }
166+ return null ;
130167}
131168
132169
0 commit comments