使用Gradle和Android Studio将所有模块工件安装到自定义maven存储库

时间:2015-07-31 00:26:37

标签: android maven android-studio gradle android-gradle

我有一个我在Android项目中使用的纯Java库,我试图对其进行配置,以便在我运行“gradle install'它将构建整个项目并将所有工件安装到自定义本地存储库,这显然是一个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),那么它会很好地将所有工件安装到/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

====扩展这个问题A ====

因为我已经为这个问题设置了奖励,让我们扩展它并询问我该如何制作它以便我在我的项目gradle文件和#34中编写上述代码一次; gradle uploadArchives"它会部署所有项目的工件吗?目前我已经将所有代码交叉复制了所有的构建gradle文件,我讨厌这种解决方案......

2 个答案:

答案 0 :(得分:5)

好的,所以我浪费了很多时间和脑细胞......

而不是声明:

repository(url: file("/some/path/to/my/custom/repo"))

将其更改为:

repository url: 'file://' + new File("/some/path/to/my/custom/repo").absolutePath

我不知道为什么,但现在我尝试的每个配置都有效......

答案 1 :(得分:1)

而不是mavenInstaller您尝试mavenDeployer了吗? 根据{{​​3}},它支持您想要做的事情。

编辑: 您是否尝试将mavenDeployer与:

合并
publishing {
    repositories {
        maven {
            url MAVEN_LOCAL_PATH
        }
    }
}