假设我需要在我的安卓库中使用一些专有的jar。我希望我的库可以从 Maven Central 方便地访问,但由于法律问题,我不能只是将依赖项放在那里。
我认为可以使用内部存储库来托管依赖项,以便自动解析它们。
我使用了 Github 存储库,就像这个一样,并在库中声明了它pom.xml
但是,Gradle似乎并没有解决这种依赖关系。如果我在 main build.gradle
中手动声明我的存储库,一切正常。我在这里做错了什么,还是安卓 gradle 插件不支持内部存储库?
在 Maven 社区中,不鼓励在已发布的 POM 中使用存储库声明,Gradle 不会尊重它们。相反,下游构建将不得不以一种或另一种方式声明内部存储库(这应该不是什么大问题)。
如果您(仅)将专有依赖项的POM发布到Maven Central(至少如果您拥有依赖项,这是此问题的常见解决方案),则下游构建将需要声明内部存储库,如下所示:
repositories {
maven {
url "https://repo1.maven.org/maven2"
artifactUrls "https://some.internal.repo"
}
}
如果您根本不将专有依赖项发布到 Maven Central(甚至不是 POM),下游构建将不得不将内部存储库声明为另一个常规 Maven 存储库:
repositories {
mavenCentral()
maven {
url "https://some.internal.repo"
}
}
但是请注意,上次我检查时,发布到 Maven Central 的规则之一是依赖项也需要从 Maven Central 获得。
PS:无论你是发布Java还是Android库在这里都无关紧要。