@@ -5,8 +5,8 @@ apply plugin: 'signing'
5
5
// Java / publishing
6
6
7
7
java {
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.
10
10
withJavadocJar()
11
11
withSourcesJar()
12
12
}
@@ -36,7 +36,7 @@ javadoc {
36
36
37
37
publishing {
38
38
publications {
39
- publishedArtifacts( MavenPublication ) {
39
+ register( " publishedArtifacts " , MavenPublication ) {
40
40
from components. java
41
41
42
42
pom {
@@ -78,35 +78,39 @@ publishing {
78
78
}
79
79
80
80
81
- // signing
81
+ // Signing
82
82
83
83
var signingExtension = project. getExtensions(). getByType(SigningExtension ) as SigningExtension
84
84
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
+
87
90
tasks. named( " publishPublishedArtifactsPublicationToSonatypeRepository" ) {
91
+ // publishing depends on signing
88
92
dependsOn signPublicationsTask
89
93
}
90
94
91
95
gradle. taskGraph. whenReady { TaskExecutionGraph graph ->
92
96
boolean wasSigningRequested = false
93
97
boolean wasPublishingRequested = false
94
- List<Sign > signingTasks = []
95
98
96
99
graph. allTasks. each {task ->
97
- logger. lifecycle( " Checking task : $task " )
98
100
if ( task instanceof Sign ) {
99
- logger. lifecycle( " - Task is Sign" )
100
- signingTasks. add( task )
101
101
wasSigningRequested = true
102
102
}
103
103
else if ( task instanceof PublishToMavenRepository ) {
104
- logger. lifecycle( " - Task is PublishToMavenRepository" )
105
104
wasPublishingRequested = true
106
105
}
107
106
}
108
107
109
108
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
+ }
110
114
logger. lifecycle " Publishing groupId: '" + project. group + " ', version: '" + project. version + " '"
111
115
}
112
116
@@ -119,14 +123,47 @@ gradle.taskGraph.whenReady { TaskExecutionGraph graph ->
119
123
var signingPassword = resolveSigningPassphrase()
120
124
signingExtension. useInMemoryPgpKeys( signingKey, signingPassword )
121
125
signingExtension. sign publishing. publications. publishedArtifacts
122
-
123
- signPublicationsTask. get(). dependsOn( signingTasks )
124
126
}
125
127
else {
126
128
// signing was not explicitly requested and we are not publishing to OSSRH,
127
129
// - 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 )
129
165
}
166
+ return null ;
130
167
}
131
168
132
169
0 commit comments