gpt4 book ai didi

java - Gradle `java-platform` 插件 : How to set dependencies dynamic version resolution?

转载 作者:行者123 更新时间:2023-12-03 05:21:11 31 4
gpt4 key购买 nike

我正在尝试使用 Gradle 的 java-platform 制作 BOM( Material list POM)插件并希望与该插件一起使用 Gradle 的锁定功能:我希望使版本始终保持最新。
这是我的 build.gradle 的一部分文件。

plugins {
id "java-platform"
id "maven-publish"
}

javaPlatform {
allowDependencies()
}

dependencyLocking {
lockAllConfigurations()
lockMode = LockMode.STRICT
}

... skipped ...

dependencies {
constraints {
api("com.graphql-java:graphql-java:${library_graphql_version}")
api("com.graphql-java:java-dataloader:${library_graphqlDataloader_version}")

// Redisson
api("org.redisson:redisson-hibernate-53:${library_redisson_version}")
api("org.redisson:redisson-spring-boot-starter:${library_redisson_version}")
api("org.redisson:redisson-spring-data-23:${library_redisson_version}")
}
}

publications {
some(MavenPublication) {
from components.javaPlatform
afterEvaluate {
pom {
name = 'BOM'
description = 'Bill of Materials (BOM)'
}
}
}
}

... skipped ...
gradle.properties文件
library_graphql_version=14.+
library_graphqlDataloader_version=2.+
library_redisson_version=3.+
当我执行 generatePomFileForSomePublication任务它被翻译成以下 POM 片段:
... skipped ...

<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>14.+</version>
</dependency>
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>java-dataloader</artifactId>
<version>2.+</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-hibernate-53</artifactId>
<version>3.+</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.+</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-data-23</artifactId>
<version>3.+</version>
</dependency>
</dependencies>
</dependencyManagement>

... skipped ...
显然有 plus不应该出现在生成的 POM 中的迹象。这意味着,依赖解析不适用于 java-platform约束。
所以问题是我怎样才能使依赖解析适用于这些 constraints ?

最佳答案

找到了一个不使用 java-platform 的解决方法插入。

apply plugin: 'java'
apply plugin: 'maven-publish'

repositories {
mavenCentral()
jcenter()
google()
gradlePluginPortal()
}

dependencyLocking {
lockAllConfigurations()
lockMode = LockMode.STRICT
}

configurations {
all {
resolutionStrategy.activateDependencyLocking()
resolutionStrategy.cacheChangingModulesFor 0, "minutes"
}
}

dependencies {
compile("com.graphql-java:graphql-java:${library_graphql_version}")
compile("com.graphql-java:java-dataloader:${library_graphqlDataloader_version}")

compile("org.redisson:redisson-hibernate-53:${library_redisson_version}")
compile("org.redisson:redisson-spring-boot-starter:${library_redisson_version}")
compile("org.redisson:redisson-spring-data-23:${library_redisson_version}")
}

jar {
enabled = false
}

publishing {
publications {
some(MavenPublication) {
afterEvaluate {
pom {
name = 'BOM'
description = 'Bill of Materials (BOM)'
packaging = 'pom'

withXml {
Node pomNode = asNode() as Node
pomNode.dependencyManagement.dependencies.each { dependencies ->
pomNode.dependencies.dependency.each { node ->
dependencies.append(node)
}
}
pomNode.properties.each { properties ->
pomNode.dependencyManagement.dependencies.dependency.each { dependency ->
def groupId = dependency.groupId[0].value().first()
def artifactId = dependency.artifactId[0].value().first()
def version = dependency.version[0].value().first()

def propertyName = "${groupId}.${artifactId}.version"
properties.append(new Node(null, propertyName, null, version))

dependency.version[0].setValue("\${${propertyName}}")
}
}
pomNode.remove(pomNode.dependencies)
}
}
}
}
}
}

关于java - Gradle `java-platform` 插件 : How to set dependencies dynamic version resolution?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63425450/

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