我有一个我在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文件,我讨厌这种解决方案......
答案 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
}
}
}