gpt4 book ai didi

Gradle 单项目插件管理 block 不起作用(Kotlin DSL)

转载 作者:行者123 更新时间:2023-12-03 03:45:20 28 4
gpt4 key购买 nike

我需要将多项目构建更改为单项目构建,因为此 repo 中只有一个项目。目前,在 settings.gradle ,我有一个当前使用 pluginManagement 的自定义插件存储库用 resolutionStrategy 阻止和我的 repo list :

pluginManagement {
resolutionStrategy {
eachPlugin {
if (requested.id.namespace == 'com.meanwhileinhell.plugin') {
useModule('com.meanwhileinhell:gradle-plugin:1.0.0-SNAPSHOT')
}
}
}

repositories {
mavenLocal()
maven { url "https://repo.spring.io/milestone" }
maven { url "https://plugins.gradle.org/m2/" }

// Meanwhileinhell repo
maven {
url "s3://mvn.meanwhileinhell.com/releases"
credentials(AwsCredentials) {
accessKey s3_access_key
secretKey s3_access_secret
}
}
}

plugins {
...
...
}
}

但是,删除 settings.gradle并将此块移动到我的 build.gradle.kts 中(Kotlin DSL) 似乎什么都不做。我试过包裹在一个
configurations {
all {
resolutionStrategy {
eachPlugin {
...
}
}
}
}

并且
settings {
pluginManagement {
resolutionStrategy {
eachPlugin {
...
}
}
}
}

我找到了一个使用 settingsEvaluated 的 SO 答案为了得到 settings对象,但这又是不行的。

目前我的 build.gradle.kts看起来像这样,没有从我的仓库中提取任何插件:
val springBootVersion: String by project

group = "com.meanwhileinhell.myapp"
version = "$version"

repositories {
mavenCentral()
mavenLocal()
maven ("https://repo.spring.io/snapshot")
maven ("https://repo.spring.io/milestone")
maven ("https://plugins.gradle.org/m2/")

maven {
url = uri("s3://mvn.meanwhileinhell.com/releases")
credentials(AwsCredentials::class) {
accessKey = (project.property("s3_access_key") as String)
secretKey = (project.property("s3_access_secret") as String)
}
}
}

plugins {
base
eclipse
idea
java
id("io.spring.dependency-management") version "1.0.9.RELEASE"
// Load but don't apply to root project
id("org.springframework.boot") version "1.5.14.RELEASE" apply false
}

dependencies {
...
}

每当我尝试添加像 id("com.meanwhileinhell.plugin.hell2java") version "1.0.0-SNAPSHOT" 这样的插件 ID 时我收到一个错误,看起来它甚至没有在我的 S3 位置中查找:
* What went wrong:
Plugin [id: 'com.meanwhileinhell.plugin.hell2java', version: '1.0.0-SNAPSHOT'] was not found in any of the following sources:

- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.meanwhileinhell.plugin.hell2java:com.meanwhileinhell.plugin.hell2java.gradle.plugin:1.0.0-SNAPSHOT')
Searched in the following repositories:
Gradle Central Plugin Repository

对此的任何帮助将不胜感激!

编辑 !!!! -----------------------

我刚刚在 Gradle 文档中找到了这个:
https://docs.gradle.org/current/userguide/plugins.html#sec:plugin_management

The pluginManagement {} block may only appear in either the settings.gradle file....



看起来我完全走错了路,所以将研究初始化脚本路线。

最佳答案

我认为您可能遗漏了一些有关文件结构的信息。

在 Groovy DSL 中,您有以下文件:

  • build.gradle
  • settings.gradle
  • init.gradle

  • 在 Kotlin DSL 中,您拥有相同的文件,但扩展名为 .kts:
  • build.gradle.kts
  • settings.gradle.kts
  • init.gradle.kts

  • Kotlin DSL 与 Groovy DSL 的放置位置没有区别。 pluginManagement需要进入设置文件,所以对于 Kotlin,这将是 settings.gradle.kts .如果您有疑问,请查看文档。对于几乎所有的代码示例,您都可以在 Groovy 和 Kotlin DSL 之间切换以查看如何操作(以及它们应该放入哪些文件)。

    关于Gradle 单项目插件管理 block 不起作用(Kotlin DSL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60319681/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com