1- apply plugin : ' signing'
2- apply plugin : " de.marcphilipp.nexus-publish"
3- apply plugin : " io.codearte.nexus-staging"
4- apply plugin : ' digital.wup.android-maven-publish'
5-
6- if (hasProperty(" ossrhTokenPassword" )) {
7- signing {
8- sign configurations. archives
9- }
10-
11- nexusStaging {
12- packageGroup = group
13- username = project. hasProperty(" ossrhToken" ) ? project. ext[" ossrhToken" ] : " "
14- password = project. hasProperty(" ossrhTokenPassword" ) ? project. ext[" ossrhTokenPassword" ] : " "
15- }
16-
17- publishing {
18- publications {
19- mavenAar(MavenPublication ) {
20- from components. android
21-
22- artifact(" $buildDir /outputs/aar/$jarFileName -release.aar" )
23-
24- artifact(file(" $buildDir /libs/$jarFileName -$version -javadoc.jar.asc" )) {
25- classifier = ' javadoc'
26- extension = ' jar.asc'
27- }
28-
29- artifact(file(" $buildDir /libs/$jarFileName -$version -sources.jar.asc" )) {
30- classifier = ' sources'
31- extension = ' jar.asc'
32- }
33-
34- artifact(file(" $buildDir /outputs/aar/$jarFileName -release.aar.asc" )) {
35- classifier = null
36- extension = ' aar.asc'
37- }
38-
39- pom {
40- name = publishArtifactName
41- packaging = ' aar'
42- groupId = publishGroupId
1+ apply plugin : ' maven-publish'
2+
3+ // Simple module-level publishing for manual upload to Central Portal
4+ if (hasProperty(" ossrhTokenPassword" ) || hasProperty(" centralPassword" )) {
5+
6+ // Use afterEvaluate to ensure Android components are available
7+ afterEvaluate {
8+ publishing {
9+ publications {
10+ mavenAar(MavenPublication ) {
11+ // Set correct coordinates
12+ groupId = group
4313 artifactId = publishArtifactId
44- description = publishDescription
45- url = githubUrl
46- licenses {
47- license {
48- name = licenseName
49- url = licenseUrl
50- }
51- }
52-
53- developers {
54- developer {
55- id = developerId
56- name = developerName
57- email = developerEmail
58- }
59- }
60- scm {
61- connection = scmConnection
62- developerConnection = scmDeveloperConnection
63- url = scmUrl
64- }
65- }
66-
67- pom. withXml {
68- def pomFile = file(" ${ project.buildDir} /generated-pom.xml" )
69- writeTo(pomFile)
70- def pomAscFile = signing. sign(pomFile). signatureFiles[0 ]
71- artifact(pomAscFile) {
72- classifier = null
73- extension = ' pom.asc'
74- }
75- }
76-
77- project. tasks. signArchives. signatureFiles. each {
78- artifact(it) {
79- def matcher = it. file =~ / -(sources|javadoc)\. jar\. asc$/
80- if (matcher. find()) {
81- classifier = matcher. group(1 )
82- } else {
83- classifier = null
84- }
85- extension = ' jar.asc'
14+ version = version
15+
16+ // Include the AAR artifact and components properly for Android
17+ from components. release
18+
19+ pom. withXml {
20+ def root = asNode()
21+
22+ // Add name element properly
23+ def nameNode = root. appendNode(' name' )
24+ nameNode. setValue(publishArtifactName)
25+
26+ // Add description
27+ def descNode = root. appendNode(' description' )
28+ descNode. setValue(publishDescription)
29+
30+ // Add URL
31+ def urlNode = root. appendNode(' url' )
32+ urlNode. setValue(githubUrl)
33+
34+ // Add licenses
35+ def licensesNode = root. appendNode(' licenses' )
36+ def licenseNode = licensesNode. appendNode(' license' )
37+ licenseNode. appendNode(' name' , ' MIT License' )
38+ licenseNode. appendNode(' url' , ' https://opensource.org/licenses/MIT' )
39+
40+ // Add developers
41+ def developersNode = root. appendNode(' developers' )
42+ def developerNode = developersNode. appendNode(' developer' )
43+ developerNode. appendNode(' id' , ' cloudinary' )
44+ developerNode. appendNode(' name' , ' Cloudinary' )
45+ developerNode
. appendNode(
' email' ,
' [email protected] ' )
46+
47+ // Add SCM
48+ def scmNode = root. appendNode(' scm' )
49+ scmNode. appendNode(' connection' , scmConnection)
50+ scmNode. appendNode(' developerConnection' , scmDeveloperConnection)
51+ scmNode. appendNode(' url' , githubUrl)
8652 }
8753 }
8854 }
8955 }
90-
91- nexusPublishing {
92- repositories {
93- sonatype {
94- username = project. hasProperty(" ossrhToken" ) ? project. ext[" ossrhToken" ] : " "
95- password = project. hasProperty(" ossrhTokenPassword" ) ? project. ext[" ossrhTokenPassword" ] : " "
96- }
97- }
98- }
99-
100- model {
101- tasks. generatePomFileForMavenAarPublication {
102- destination = file(" $buildDir /generated-pom.xml" )
103- }
104- tasks. publishMavenAarPublicationToMavenLocal {
105- dependsOn project. tasks. signArchives
106- }
107- tasks. publishMavenAarPublicationToSonatypeRepository {
108- dependsOn project. tasks. signArchives
56+ }
57+
58+ // Ensure Android generates sources and javadoc JARs
59+ android {
60+ publishing {
61+ singleVariant(' release' ) {
62+ withSourcesJar()
63+ withJavadocJar()
10964 }
11065 }
11166 }
112- }
113-
114- task signAar (type : Sign ) {
115- def aarFile = file(" $buildDir /outputs/aar/$jarFileName -release.aar" )
116- if (aarFile. exists()) {
117- sign aarFile
118- } else {
119- // throw new GradleException("The artifact file does not exist: $aarFile")
120- }
121- }
122-
123- task sourcesJar (type : Jar ) {
124- from android. sourceSets. main. java. srcDirs
125- archiveClassifier = ' sources'
126- }
127- task javadoc (type : Javadoc ) {
128- source = android. sourceSets. main. java. srcDirs
129- classpath + = project. files(android. getBootClasspath(). join(File . pathSeparator))
130- android. libraryVariants. all { var -> classpath + = var. javaCompileProvider. get(). classpath }
131- }
132- task javadocJar (type : Jar , dependsOn : javadoc) {
133- archiveClassifier = ' javadoc'
134- from javadoc. destinationDir
135- }
136-
137- artifacts {
138- archives javadocJar, sourcesJar
139- }
140-
141- tasks. withType(GenerateModuleMetadata ) {
142- enabled = false
14367}
0 commit comments