gpt4 book ai didi

maven - 从 Gradle 构建内部复制 Maven "dependencyManagement"标签

转载 作者:行者123 更新时间:2023-12-01 09:06:07 25 4
gpt4 key购买 nike

我正在尝试关注 this Spring Boot/Vaadin guide 然而 我使用的是 Gradle,而不是 Maven。

在该指南的最顶部,他们说要使用以下 Maven XML:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-bom</artifactId>
<version>10.0.11</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

但是我没有看到 dependencyManagement任务可通过 Gradle 获得。所以我问:我如何复制与 <dependencyManagement/> 相同的行为上面的 XML 元素在“Gradle land”中?

更新:当前尝试
dependencyManagement {
imports {
mavenBom 'com.vaadin:vaadin-bom:10.0.11'
}
}

唯一的问题是当我将它添加到我的 build.gradle 时然后运行 ​​ ./gradlew clean我收到以下 Gradle 错误:

"Could not find method dependencyManagement() for arguments..."

最佳答案

这应该给你一个有效的构建:

plugins {
// the Gradle plugin which provides the “dependencyManagement” block
id 'io.spring.dependency-management' version '1.0.6.RELEASE'
// add Java build functionality to be able to follow the Vaadin guide
id 'java'
}

dependencyManagement {
imports {
// the Maven BOM which contains a coherent set of module versions
// for Vaadin dependencies
mavenBom 'com.vaadin:vaadin-bom:10.0.11'
}
}

repositories {
// find dependency modules on Maven Central
mavenCentral()
}

dependencies {
// the dependency module you need according to the Vaadin with
// Spring Boot guide; the version of the module is taken from the
// imported BOM; transitive dependencies are automatically taken
// care of by Gradle (just as with Maven)
compile 'com.vaadin:vaadin-spring-boot-starter'
}

运行 ./gradlew dependencies --configuration compileClasspath查看所有依赖项现在在您的 Java 编译类路径上可用。

编辑以回答评论中的问题:实际上,BOM 的导入导致与没有它的情况下使用的依赖项略有不同。您可以像这样看到依赖项差异:
  • ./gradlew dependencies --configuration compileClasspath > with-BOM.txt
  • 删除 dependencyManagement阻止并向单个依赖项添加一个版本:compile 'com.vaadin:vaadin-spring-boot-starter:10.0.11'
  • ./gradlew dependencies --configuration compileClasspath > without-BOM.txt
  • diff -u with-BOM.txt without-BOM.txt

  • 您可以看到细微的差异,例如 org.webjars.bowergithub.webcomponents:webcomponentsjs:1.2.6与 BOM 和版本一起使用 1.2.2没有它。原因可以在 the BOM 中找到。其中版本 1.2.6是定义的,作者还提到了原因:“传递性 webjar 依赖项,此处为可重复构建定义”

    关于maven - 从 Gradle 构建内部复制 Maven "dependencyManagement"标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56638350/

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