我有一个在我的 Android 项目中使用的纯 Java 库,我正在尝试配置它,以便当我运行“gradle install”时,它将构建整个项目并将所有 Artifact 安装到自定义本地存储库中显然是一个 git 存储库。
这是模块 gradle 文件,项目构建良好:
group 'com.packagenaem'
def artifact = 'artifactname'
version '1.0.0'
apply plugin: 'java'
def MAVEN_LOCAL_PATH = 'file:///some/path/to/my/repo'
uploadArchives {
repositories {
apply plugin: 'maven'
mavenInstaller {
repository(url: MAVEN_LOCAL_PATH)
pom.groupId = group
pom.artifactId = artifact
pom.version = version
pom.packaging = 'jar'
}
}
}
task sourcesJar(type: Jar, dependsOn:classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn:javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
}
我从命令行运行时得到的错误是:
Could not find method repository() for arguments [{url=file:///some/path/to/my/repo}] on repository container
如果我省略这一行 repository(url: MAVEN_LOCAL_PATH)
那么它会将所有 Artifact 很好地安装到/users/$USER/.m2/repository
===更新===
在执行以下 gradle uploadArchive
时稍微玩了一下之后,我遇到了以下错误:
Failed to deploy artifacts/metadata: No connector available to access repository remote (/some/path/to/my/custom/repo) of type default using the available factories WagonRepositoryConnectorFactory
==== 稍微扩展一下这个问题 ====
既然我已经为这个问题设置了赏金,让我们扩展它并询问我如何制作它以便我将在我的项目 gradle 文件中编写一次以上代码并在“gradle uploadArchives”上部署所有项目的 Artifact ?目前我已经将所有代码复制到我拥有的所有构建 gradle 文件中,我讨厌这种解决方案......
最佳答案
好吧,所以我在这个上浪费了很多时间和脑细胞......
而不是声明:
repository(url: file("/some/path/to/my/custom/repo"))
将其更改为:
repository url: 'file://' + new File("/some/path/to/my/custom/repo").absolutePath
我不知道为什么,但现在我尝试的每个配置都有效...
关于android - 使用 Gradle 和 Android Studio 将所有模块 Artifact 安装到自定义 Maven 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736237/