gpt4 book ai didi

gradle - 如何获得依赖关系元数据填充jar的权限?

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

因此,如果我在Maven中构建一个jar,例如jackson-core-2.5.1.jar,我会在 Artifact 中找到以下内容:

META-INF/maven/
META-INF/maven/com.fasterxml.jackson.core/
META-INF/maven/com.fasterxml.jackson.core/jackson-core/
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml

但是,Gradle似乎并未创建此数据。问题在于,我们的构建中有多个组件,包括一个父项目,它们不在同一SCM位置托管。对于我们庞大而复杂的构建,如果没有元数据,Gradle怎么会知道一个SCM位置中的本地构建 Artifact 依赖于另一个SCM位置中的本地构建 Artifact ? Gradle处理这种情况的方法是什么?

最佳答案

存储库包含pom.xml的单独副本。它通常位于磁盘物理结构中的JAR文件旁边。这适用于Nexus或Artifatory之类的二进制存储库,也适用于本地Maven存储库(在$HOME/.m2/repo下)。

如果出于某种原因要复制Maven的行为,可以告诉Gradle创建这些文件。我们在subprojects闭包中使用此自定义项,该闭包配置了我们的多项目Gradle构建。

jar {
// until we have better solution
// https://discuss.gradle.org/t/jar-task-does-not-see-dependency-when-using-maven-publish/11091
if (project.tasks.findByName('generatePomFileForMavenJavaPublication')) {
dependsOn 'generatePomFileForMavenJavaPublication'
} else {
project.tasks.whenTaskAdded { addedTask ->
if (addedTask.name == 'generatePomFileForMavenJavaPublication') {
project.tasks.jar.dependsOn 'generatePomFileForMavenJavaPublication'
}
}
}
into("META-INF/maven/$project.group/$project.archivesBaseName") {
/*
from generatePomFileForMavenJavaPublication
*/
from new File(project.buildDir, 'publications/mavenJava')
rename ".*", "pom.xml"

}
}

如果有时候懒惰地创建 generatePomFileForMavenJavaPublication任务没有问题,那会更简单。并且您需要检查如何创建属性文件。我猜你可以从那里运行的Gradle进程中转储属性。

关于gradle - 如何获得依赖关系元数据填充jar的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399942/

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