// 本机和 WinBoLL Maven 仓库传输配置。
//

def getDefaultVersion(){
    // 检查编译标志位配置
    assert (winbollBuildProps['publishVersion'] != null)
    // 返回编译版本号
    return winbollBuildProps['publishVersion']
}

def siteUrl = 'https://winboll.cc/?page=studio/details.php&app=${rootProject.name}' // 项目主页
def gitUrl = 'https://gitea.winboll.cc/WinBoLL/${rootProject.name}' // 项目的git地址
def DefaultGroupId = 'cc.winboll.studio' // 类库所有者groupId
def DefaultVersion = getDefaultVersion() // 版本号
def DeveloperId='zhangsken' // 开发者账号
def DeveloperName='ZhanGSKen' // 开发者名称
def DeveloperEMail='zhangsken@188.com' // 开发者邮箱地址
def LicenseName='The Apache Software License, Version 2.0'
def LicenseUrl='http://www.apache.org/licenses/LICENSE-2.0.txt'

Properties properties = new Properties()

afterEvaluate {
    publishing {
        repositories {
            if(file("${RootProjectDir}/${winbollFilePath}").exists()) {
                properties.load(file("${RootProjectDir}/${winbollFilePath}").newDataInputStream())
                def NexusUserName = properties.getProperty("Nexus.name")
                def NexusPassword = properties.getProperty("Nexus.password")
                // WinBoLL Release 仓库
                maven{
                    //仓库的名字和地址
                    name = "WinBoLLRelease"
                    url="https://nexus.winboll.cc/repository/maven-releases/"
                    // 仓库用户名密码
                    credentials {
                        username = NexusUserName
                        password = NexusPassword
                    }
                }
                // WinBoLL Snapshot 仓库
                maven{
                    //仓库的名字和地址
                    name = "WinBoLLSnapshot"
                    url="https://nexus.winboll.cc/repository/maven-snapshots/"
                    // 仓库用户名密码
                    credentials {
                        username = NexusUserName
                        password = NexusPassword
                    }
                }
            }
        }
        publications {
            // Local Maven 仓库传输任务
            //
            release(MavenPublication) {
                groupId = DefaultGroupId
                artifactId = project.name
                version = DefaultVersion
    
                //from components.java
                // 必须有这个 否则不会上传AAR包
                afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
                // 上传source，这样使用方可以看到方法注释
                //artifact generateSourcesJar
                //要上传的aar路径
                //artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
                //artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
                
                //对pom进行的操作
                pom.withXml{
                    Node pomNode = asNode()
                    pomNode.dependencies.'*'.findAll() {
                        //将所有的默认依赖移除
                        //it.parent().remove(it)
                    }
                }
                pom {
                    name = artifactId
                    url = siteUrl
                    licenses {
                        license { //证书说明
                           name=LicenseName // 开源协议名称
                           url=LicenseUrl // 协议地址
                        }
                    }
                    developers {
                        developer {
                            id=DeveloperId // 开发者账号
                            name=DeveloperName // 开发者名称
                            email=DeveloperEMail // 开发者邮箱地址
                        }
                    }
                    //软件配置管理
                    scm {
                        connection=gitUrl
                        developerConnection=gitUrl
                        url=siteUrl
                    }
                }
            }
            
            // WinBoLL Maven Release 仓库传输任务
            //
            releaseWinBoLL(MavenPublication) {
                // 需要使用的变体，假设有free和pay两个变体，可以选择一个
                //from components.free
                
                groupId = DefaultGroupId // 文件的groupId
                artifactId = project.name //文件的名字
                version = DefaultVersion //版本号
    
                //from components.java
                // 必须有这个 否则不会上传AAR包
                afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
                // 上传source，这样使用方可以看到方法注释
                //artifact generateSourcesJar
                //要上传的aar路径
                //artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
                //artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
                
                //对pom进行的操作
                pom.withXml{
                    Node pomNode = asNode()
                    pomNode.dependencies.'*'.findAll() {
                        //将所有的默认依赖移除
                        //it.parent().remove(it)
                    }
                }
                pom {
                    name = artifactId
                    url = siteUrl
                    licenses {
                        license { //证书说明
                           name=LicenseName // 开源协议名称
                           url=LicenseUrl // 协议地址
                        }
                    }
                    developers {
                        developer {
                            id=DeveloperId // 开发者账号
                            name=DeveloperName // 开发者名称
                            email=DeveloperEMail // 开发者邮箱地址
                        }
                    }
                    //软件配置管理
                    scm {
                        connection=gitUrl
                        developerConnection=gitUrl
                        url=siteUrl
                    }
                }
                
            } // 创建名为 release 的任务结束
            
            // WinBoLL Maven Snapshot 仓库传输任务
            //
            snapshotWinBoLL(MavenPublication) {
                // 需要使用的变体，假设有free和pay两个变体，可以选择一个
                //from components.free
                
                groupId = DefaultGroupId // 文件的groupId
                artifactId = project.name //文件的名字
                version = DefaultVersion + "-SNAPSHOT" //版本号
    
                //from components.java
                // 必须有这个 否则不会上传AAR包
                afterEvaluate { artifact(tasks.getByName("bundleReleaseAar")) }
                // 上传source，这样使用方可以看到方法注释
                //artifact generateSourcesJar
                //要上传的aar路径
                //artifact "$buildDir/outputs/aar/${project.getName()}-release.aar"
                //artifact "$buildDir/outputs/aar/${project.getName()}-debug.aar"
                
                //对pom进行的操作
                pom.withXml{
                    Node pomNode = asNode()
                    pomNode.dependencies.'*'.findAll() {
                        //将所有的默认依赖移除
                        //it.parent().remove(it)
                    }
                }
                pom {
                    name = artifactId
                    url = siteUrl
                    licenses {
                        license { //证书说明
                           name=LicenseName // 开源协议名称
                           url=LicenseUrl // 协议地址
                        }
                    }
                    developers {
                        developer {
                            id=DeveloperId // 开发者账号
                            name=DeveloperName // 开发者名称
                            email=DeveloperEMail // 开发者邮箱地址
                        }
                    }
                    //软件配置管理
                    scm {
                        connection=gitUrl
                        developerConnection=gitUrl
                        url=siteUrl
                    }
                }
            } // 创建名为 snapshot 的任务结束
        }
        
    }
}
