Android vs. Maven Internal Repositories



假设我需要在我的安卓库中使用一些专有的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库在这里都无关紧要。

最新更新