Gradle - 如果项目仍然具有 SNAPSHOT 依赖项,则抛出异常

如果当前项目仍然具有快照依赖项,我想使 gradle 构建失败。


到目前为止,我的代码只查找 java 依赖项,缺少 .NET 依赖项,因此它仅适用于 java 项目。我想让它适用于所有项目。


def addSnapshotCheckingTask(Project project) {

    project.tasks.withType(JavaCompile) { compileJava ->

        project.tasks.create(compileJava.name + 'SnapshotChecking', {

            onlyIf {

                project.ext.isRelease || project.ext.commitVersion != null

            }

            compileJava.dependsOn it

            doLast {

                def snapshots = compileJava.classpath

                        .filter { project.ext.isRelease || !(it.path ==~ /(?i)${project.rootProject.projectDir.toString().replace('\\', '\\\\')}.*build.libs.*/) }

                        .filter { it.path =~ /(?i)-SNAPSHOT/  }

                        .collect { it.name }

                        .unique()

                if (!snapshots.isEmpty()) {

                    throw new GradleException("Please get rid of snapshots for following dependencies before releasing $snapshots")

                }

            }

        })

    }

}

我需要一些帮助来泛化此代码段以适用于所有类型的依赖项(不仅仅是 Java)


谢谢!


LE 这样的事情可行吗? https://discuss.gradle.org/t/how-can-i-check-for-snapshot-dependencies-and-throw-an-exception-if-some-where-found/4064


LEATH
浏览 267回答 2
2回答

蝴蝶刀刀

所以我通过稍微调整@lance-java 的响应来让它工作,它看起来像:    Task snapshotCheckingTask = project.tasks.create('snapshotCheckingTask', {        doLast {            def snapshots = new ArrayList()            def projectConfigurations = project.configurations.findAll { true }            projectConfigurations.each {                if (it.isCanBeResolved()) {                    it.resolvedConfiguration.resolvedArtifacts.each {                        if (it.moduleVersion.id.version.endsWith('-SNAPSHOT')) {                            snapshots.add(it)                        }                    }                }            }            if (!snapshots.isEmpty()) {                throw new GradleException("Please get rid of snapshots for following dependencies before releasing $snapshots")            } else {                throw new GradleException("Hah, no snapshots!")            }        }    })    project.tasks.release.dependsOn snapshotCheckingTask抄送@尤金PS 但是,这并没有考虑到 .net 依赖项
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java