从 Gradle 构建中复制 Maven“dependencyManagement”标签

2024-01-09

我正在尝试跟随这个 Spring Boot/Vaadin 指南 https://www.baeldung.com/spring-boot-vaadin however我正在使用 Gradle,not 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 错误:

"找不到参数的方法 dependencyManagement()..."


这应该会给你一个工作构建:

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'
}

Run ./gradlew dependencies --configuration compileClasspath可以看到所有依赖项现在都在 Java 编译类路径上可用。


编辑以回复评论中的问题:确实,BOM 的导入导致了一组与没有 BOM 时使用的依赖项略有不同的依赖项。您可以像这样看到依赖关系的差异:

  1. ./gradlew dependencies --configuration compileClasspath > with-BOM.txt
  2. 去除dependencyManagement阻止并向单个依赖项添加版本:compile 'com.vaadin:vaadin-spring-boot-starter:10.0.11'
  3. ./gradlew dependencies --configuration compileClasspath > without-BOM.txt
  4. diff -u with-BOM.txt without-BOM.txt

您可以看到细微的差异,例如org.webjars.bowergithub.webcomponents:webcomponentsjs:1.2.6与 BOM 和版本一起使用1.2.2没有它。其原因可以在the BOM https://repo1.maven.org/maven2/com/vaadin/vaadin-bom/10.0.11/vaadin-bom-10.0.11.pom哪里的版本1.2.6已定义,作者还提到了其原因:“传递性 webjar 依赖项,在此处定义用于可重复构建”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Gradle 构建中复制 Maven“dependencyManagement”标签 的相关文章

随机推荐

  • 域名指向单个页面

    我试图将域名指向单个页面 并保持域名相同 无重定向 因此 如果用户输入 www domain1 com au gt 将显示原始站点 如果用户输入 www domain2 com au gt 他们会显示 www domain1 com au
  • ubuntu:sem_timedwait 未唤醒 (C)

    我有3个进程需要同步 进程一执行某项操作 然后唤醒进程二并休眠 进程二执行某项操作 然后唤醒进程三并休眠 进程三执行某项操作 唤醒进程一并休眠 整个循环定时运行在 25hz 左右 由于在我的 真实 应用程序中触发进程二之前 外部同步到进程一
  • 使用CodeIgniter从mysql数据库中随机记录

    我在互联网上进行了研究 但找不到任何东西 我有一个 mysql 数据库 并在一个表中记录 我需要在每次页面加载时从该表中获取随机记录 我怎样才能做到这一点 有什么功能吗 欣赏 谢谢 已排序 关联 http www derekallard c
  • 在 Python 或 C++ 中单声道播放 Mp3

    我正在编码音乐播放器 https github com fabiomdiniz Gokya 2 The Super Gokya 在 python 中使用 pyqt 我希望它能够单声道播放 mp3 文件 我已经使用 pygame 完成了这一点
  • SQL 中的日期范围交集分割

    我有一个 SQL Server 2005 数据库 其中包含一个名为 成员资格 的表 表架构为 PersonID int Surname nvarchar 30 FirstName nvarchar 30 Description nvarch
  • 强制自动启动计算机?

    我们知道如何使用 Java 强制关闭计算机 例如 以下代码可以很好地强制关闭 public static void main String arg throws IOException Runtime runtime Runtime get
  • 为什么溢出:隐藏会为内联块元素添加额外的高度?

    In 这个例子 http jsbin com zowejokuluce 4 HTML div div foo bar div div CSS body html div height 100 margin 0 div div display
  • 为什么 std::fill(0) 比 std::fill(1) 慢?

    我观察到一个系统std fill在一个大的std vector
  • 如何在 JAX-WS 中添加响应标头?

    我有一个与此类似的方法 WebMethod public BeanResponse generar WebParam header true mode Mode INOUT name auditoria partName auditoria
  • 如何使用 RSpec 针对真实应用程序开发 Rails3 引擎?

    关于引擎开发以及使用虚拟应用程序进行测试的文章已经有很多 在我们的例子中 我们开发的引擎不是独立的实体 而是依赖于真实的 Rails 3 应用程序 我们仍然希望此代码存在于引擎中 而不是成为应用程序的一部分 因为引擎的工作是从拥有自己的表和
  • 按名称选择特定打印机 VB

    我制作了一个程序 该程序将在启动时运行 要求用户选择他们的默认打印机 该代码显示组合框中所有已安装的打印机 提交按钮会将组合框中选择的打印机设置为该用户的默认打印机 有没有办法只显示包含特定文本的打印机名称 例如 ABC printer1A
  • Python正则表达式选择所有不匹配模式的元素

    我昨天问了类似的问题保留 pandas 系列中带有模式的元素 而不将其转换为列表 https stackoverflow com questions 64958329 keep elements with pattern in pandas
  • Python:如何在 Windows 资源管理器上打开文件夹(Python 3.6.2、Windows 10)

    如果我将要打开的路径存储在名为 Finalpath 的字符串中 如下所示 2 8 电影 英语 虎胆龙威系列 那么我如何在 Windows 资源管理器中打开它 Windows 10 Python 3 6 2 P S 我知道很多人问过这个问题
  • 如何在 Android 中将字节数组写入文件?

    这是我创建文件的代码 public void writeToFile byte array try String path data data lalallalaa txt FileOutputStream stream new FileO
  • WordPress 自定义帖子类型搜索结果页面

    我设置了一个自定义搜索表单来搜索和显示自定义帖子类型的结果 形式为
  • next-auth 中 useSession() 的“加载”返回值是什么?

    我正在编写一个 Next js 项目 并使用 GitHub 和实现身份验证next auth 在以下示例中next auth 有一个电话useSession 它返回两个对象 session and loading 然而 我见过的例子都没有实
  • 使用 HERE API 获取我的位置时出现问题(Wifi)[已更新]

    我在我的平板电脑上安装了 HERE 测试产品 这是一款旧的 Android 5 1 平板电脑 没有 GPS 或蜂窝数据 只有 Wifi 并且它可以很好地 大约 使用 Wifi 提供我的位置 所以我尝试在我的应用程序中进行相同的编程 下载了
  • Cordova 插件的输出延迟

    我编写了一个 Cordova 插件来下载文件并将其保存在数据文件夹中 除了返回值之外 一切都工作正常 我想显示一个进度条并需要获取当前进度 这是我的代码中的相关部分 while readed is read buffer gt 0 fos
  • Rails CSRF 令牌 - 它们会过期吗?

    我注意到 如果您使用无效的 CSRF 令牌发帖 rails devise 会自动将您注销 我有一个不刷新页面的应用程序 用户长时间坐在实时页面上 有时用户会被踢出 我想知道 CSRF 令牌是否已过期 从而使其无效 这就是为什么我想了解 Ra
  • 从 Gradle 构建中复制 Maven“dependencyManagement”标签

    我正在尝试跟随这个 Spring Boot Vaadin 指南 https www baeldung com spring boot vaadin however我正在使用 Gradle not Maven 在该指南的最顶部 他们说使用以下