Kru*_*upa 4 java gradle maven build.gradle
我有一个gradle文件,用于构建JAR并将其发布在nexus服务器上的maven存储库中。
build.gradle 文件publishing {
    publications {
        maven(MavenPublication) {
            artifact shadowJar
        }
    }
    repositories {
        maven {
            credentials {
                username nexusUsername
                password nexusPassword
            }
            if (IsSnapshot.toBoolean())
                url "${nexusUrl}/repository/maven-snapshots/"
            else
                url "${nexusUrl}/repository/maven-releases/"
        }
    }
}
此任务基于的值将JAR文件发布到相应的存储库(快照/发行版)IsSnapshot。
我还有一个变量:DoPublish。如果DoPublish是true,那么我要发布该软件包;否则,我不想在nexus上发布该软件包。
我想url在这种情况下应该设置为空字符串。有什么更好的建议吗?
发布任务
generatePomFileFor {module1}发布-生成发布'module1'的Maven POM文件。
generatePomFileFor {module2}发布-生成发布'module2'的Maven POM文件。
generatePomFileForMavenPublication-为发布“ maven”生成Maven POM文件。
出版-出版该项目制作的所有出版物。
publish {module1} PublicationToMavenLocal-将Maven发布'module1'发布到本地Maven存储库。
publish {module1} PublicationToMavenRepository-将Maven发布'module1'发布到Maven存储库'maven'。
publish {module2} PublicationToMavenLocal-将Maven发布'module2'发布到本地Maven存储库。
publish {module2} PublicationToMavenRepository-将Maven发布'module2'发布到Maven存储库'maven'。
publishMavenPublicationToMavenLocal-将Maven发布'maven'发布到本地Maven存储库。
publishMavenPublicationToMavenRepository-将Maven出版物“ maven”发布到Maven仓库“ maven”。
publishToMavenLocal-将由此项目产生的所有Maven出版物发布到本地Maven缓存。
可以使用onlyIfgradle文档中所述的方法有条件地停用任务:https ://docs.gradle.org/current/userguide/more_about_tasks.html#sec:using_a_predicate
这里有问题的任务是publishMavenJavaPublicationToMavenRepository,如https://docs.gradle.org/current/userguide/publishing_maven.html中所述,这是需要禁用的任务:
publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }
因为该任务publishMavenJavaPublicationToMavenRepository是在成功发布配置后动态生成的,所以当解析和评估生成脚本导致异常时,它可能不可用。在这种情况下,可以在完成gragh任务后对其进行更新:
gradle.taskGraph.whenReady { graph -> 
  publishMavenJavaPublicationToMavenRepository.onlyIf { IsSnapshot.toBoolean() }
}
如果您使用其他发布插件,则可能是不同的任务,但想法是相同的