说我需要在我的android库中使用一些专有的jar。我希望我的图书馆可以从Maven Central方便地获得,但由于法律问题,我不能把依赖项放在那里。
我认为可以使用Internal Repository来托管依赖项,以便自动解决它们。
我使用了Github repo,就像this one一样,并在库pom.xml
然而,Gradle似乎没有解决这种依赖关系。如果我在main build.gradle
中手动声明我的存储库,一切正常。我在这里做错了什么,或者android gradle plugind只是不支持内部存储库?
答案 0 :(得分:2)
Maven社区不鼓励在已发布的POM中拥有存储库声明,而Gradle不会尊重它们。相反,下游构建必须以某种方式声明内部存储库(这不应该是一个大问题。)
如果您(仅)向Maven Central发布专有依赖关系的POM(至少如果您拥有依赖关系,这是此问题的常见解决方案),下游版本将需要按如下方式声明内部存储库:
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库都不重要。