我正在将工件 A 发布到 GitHub 上的一个自我维护的 Maven 存储库。该项目有几个传递依赖项 B、C、D,它们托管在不同的存储库中。依赖项 B、C、D 在 A 的 gradle 生成的 pom.xml(uploadArchives)中指定,但不是存储库的路径。因此,在另一个项目中将 A 指定为依赖项时,不会下载传递依赖项 B、C、D。
是否可以告诉 gradle 在 A 的 pom.xml 中包含 B、C、D 的 maven 存储库的 url?
我正在将工件 A 发布到 GitHub 上的一个自我维护的 Maven 存储库。该项目有几个传递依赖项 B、C、D,它们托管在不同的存储库中。依赖项 B、C、D 在 A 的 gradle 生成的 pom.xml(uploadArchives)中指定,但不是存储库的路径。因此,在另一个项目中将 A 指定为依赖项时,不会下载传递依赖项 B、C、D。
是否可以告诉 gradle 在 A 的 pom.xml 中包含 B、C、D 的 maven 存储库的 url?
这样做的方法是自定义生成的 POM。这是一个示例,假设该maven
插件用于发布:
uploadArchives {
repositories {
mavenDeployer {
// add further information to the generated POM
// syntax maps 1:1 to POM syntax
pom.project {
// could also generate this programmatically
// based on the repos declared in the build
repositories {
repository {
id 'myrepo'
url 'http//my.repo.com'
}
}
}
}
}
}
新的孵化maven-publish
插件提供了类似的钩子。
请注意,在解析依赖项时,Gradle 本身不支持在 POM 中声明的存储库,而仅支持您的构建声明的存储库。另请查看http://www.sonatype.com/people/2009/02/why-putting-repositories-in-your-poms-is-a-bad-idea/。