亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Gradle - 如果項目仍然具有 SNAPSHOT 依賴項,則拋出異常

Gradle - 如果項目仍然具有 SNAPSHOT 依賴項,則拋出異常

LEATH 2021-09-12 20:48:34
如果當前項目仍然具有快照依賴項,我想使 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
查看完整描述

2 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

所以我通過稍微調整@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 依賴項


查看完整回答
反對 回復 2021-09-12
  • 2 回答
  • 0 關注
  • 309 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號