我有一个SpringBoot项目,我尝试使用SpringBoot依赖项管理插件来使用提供的依赖项版本。
插件模拟了mavens BOM行为,这意味着它以某种方式从maven父项目中检索libs的版本(我不确定这是如何实现的,但通常版本取自pom.xml)。它确实具有用于为com.fasterxml.jackson.dataformat
组中的工件设置版本的jackson.version
属性。
我的项目使用来自同一组的工件,但是它不包括在BOM中(jackson-dataformat-yaml
),但我想使用相同的jackson版本。
我尝试添加这样的编译依赖:
compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson.version}"
但构建失败的原因是:
无法为DefaultDependencyHandler类型org.gradle.api.internal.artifacts.dsl.dependencies.对象获取未知属性jackson。
问:有没有办法进入酒店?或者我怎样才能重用lib版本?
更新我不确定我为什么不从一开始就尝试这个,但它很有效:
compile "com.fasterhtml" target="_blank">xml.jackson.dataformat:jackson-dataformat-yaml"
但是,我不知道为什么会这样(工件没有在任何地方声明)。
这是因为当时
(例如,${a.b}
)用于groovy中的字符串插值,它将其视为前缀
作为具有以下属性的对象
。因此在
${a.b}
中,对象a
应该具有属性b
,否则它将失败。在您的示例中,jackson
是String
的一个实例,它没有版本属性。要解决此问题,您可以使用例如jacksonVersion
或Map
。请看这里的演示。
但是,我不知道为什么会这样(工件没有在任何地方声明)。
因此,您不使用任何版本是一个问题,但它是如何工作的?
实际上gradle使用了一些规则。具体如下:
>
另一方面,它将使用存储库的第一级或第二级层次结构来获取最新版本。
从spring文档中,
Maven的依赖管理包括物料清单(bom)的概念。bom是一种特殊的pom,用于控制项目依赖的版本,并提供一个中心位置来定义和更新这些版本。
有关更多信息,您可以通过本教程:Gradle依赖关系与没有版本号的罐
plugins {
id 'org.springframework.boot' version '1.5.8.RELEASE'
id 'java'
}
repositories {
jcenter()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
>
https://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-build-systems.html
在没有提供版本的情况下,一些gradle依赖项是如何工作的
在使用工作示例更新问题后,我将尝试回答为什么它可以工作而不指定版本:
您所指的pom.xml包含依赖关系
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
... 以下是指pom。jackson bom项目中的xml,该项目又包含以下依赖项:
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>${jackson.version.dataformat}</version>
</dependency>
...然后指定jackson-dataformd-yaml工件的版本...
我正在使用Gradle的Spring Boot框架。我知道,为了包含一些Spring依赖项,我可以引用“starters”而不显式定义版本;该版本将由我选择的Spring Boot版本控制,它是Spring Boot Gradle插件的版本。示例(省略非相关的分级代码): 请注意,没有为我的应用程序依赖项定义显式版本。 我如何确保我为那些依赖项使用的版本与我的其他Spring Boot依赖项兼容?
主要内容:声明依赖关系,依赖关系配置,外部依赖,存储库,发布文件构建脚本定义了构建项目的过程; 每个项目包含一些依赖项和一些发表项。依赖性意味着支持构建项目的东西,例如来自其他项目的所需文件以及类路径中的外部(如或)。发布表示项目的结果,如测试类文件和构建文件,如文件。 负责构建和发布结果。 发布基于定义的任务。 可能希望将文件复制到本地目录,或将其上传到远程Maven或lvy存储库,或者可以在同一个多项目构建中使用另一个项目的文件。 发布的过程称为发布。 声
War插件增加了名为providedCompile和providedRuntime的两个依赖配置.这两个配置有相同的作用域在编译或者运行时的配置,不同之处在于是否会将war文件归档.很重要的一点是它们都会提供配置传递.比如在任意的provided配置中添加了commons-httpclient:commons-httpclient:3.0,该依赖依赖于commons-codec,因为这个一个”pr
Java 插件给项目增加了许多关于依赖的配置, 如下所示, 这些配置被分配给许多任务, 比如 compileJava 和 test 等配置 表22.5.Java插件-依赖配置 名称 扩展 被使用时运行的任务 含义 compile - compileJava 编译时的依赖 runtime compile - 运行时的依赖 testCompile compile compileTestJava 编译测
如何编写自定义gradle插件来处理自定义存储库中自定义模块描述符中的依赖关系?gradle文档说了以下内容,但我还没有找到任何可以告诉我如何操作的内容。 即使您的项目使用的是自定义依赖关系管理系统或类似Eclipse的东西。类路径文件作为依赖关系管理的主数据,编写Gradle插件以在Gradle中使用此数据非常容易。 我一直在为ATG项目维护一个定制的常春藤解析器(源自此项目),但Gradle最
问题内容: 我在应用程序中使用Webpack,在其中创建两个入口点- 所有我的JavaScript文件/代码的bundle.js,以及所有库(如jQuery和React)的vendor.js。为了使用以jQuery为依赖项的插件,并且我也希望在vendor.js中使用它们,我该怎么做?如果这些插件具有多个依赖项怎么办? 目前,我正在尝试在此处使用此jQuery插件-https: //github.