没有java-,ear-或war-plugin的Gradle Nexus和FlatDir部署

时间:2017-10-03 21:42:03

标签: gradle build.gradle maven-deploy-plugin maven-publish

我有一个包含非java项目的多项目gradle(版本2.1 !!)版本。

我想将生成的工件(.tar.gz文件)部署到Nexus以及目录。

目前,我在visit块中的根build.gradle中定义了存储库,并且还为根中repositories内的repositories块中的每个子项目定义了存储库subprojects档案。

我将build.gradle插件应用于根项目,将base插件应用于所有要部署工件的子项目。

我试着按照这里的说明操作:

但没有任何效果。 : - (

这就是我的所作所为:

maven-publish

... # apply the maven-publish plugin only to sub-projects that produce artifacts that should be uploaded. apply plugin: 'maven-publish' publishing { publications { tarFiles (MavenPublication) { artifact compressTar } } repositories { add rootProject.repositories.fsShare add rootProject.repositories.nexusDeploy } } ... 是我的自定义compressTar任务,用于创建我要上传的工件。

当我执行Tar时,我收到以下错误:

./gradlew publishTarFilesPublicationToNexusDeployRepository

当我执行Execution failed for task ':mySubProject:publishTarFilesPublicationToNexusDeployRepository'. > Failed to publish publication 'tarFiles' to repository 'nexusDeploy' > Failed to retrieve remote metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml from/to remote (https://myProject.nexus.url:443/nexus3/repository/builds/): Could not get resource 'myRootProject/mySubProject/0.0.0.0-SNAPSHOT/maven-metadata.xml' 时,任务成功,但没有任何内容上传到任何地方,从输出看起来uploadArchives任务只对未获得maven的子项目执行 - 适用插件。

这样做的正确方法是什么?我应该在/何时申请哪些插件?

1 个答案:

答案 0 :(得分:0)

显然,这里有两个不相关的“工作中的问题”。

问题1):我无法发布到Nexus并获得Failed to retrieve remote metadata - 错误:

答案1):我试图将“SNAPSHOT”发布到已配置为不接受“SNAPSHOT”构建的存储库。将构建版本从1.2.3.4-SNAPSHOT重命名为其他任何东西(例如1.2.3.4-SNAPSHOT-dev或更合理的1.2.3.build4`)都可以正常工作。

问题2)发布到'flatDir'存储库不起作用。 maven-publish插件没有为它创建发布任务。

答案2)要使用maven-publish发布到目录,flatDir显然不被识别为maven-publish插件可以发布到的存储库。如下定义'目录'存储库工作正常:

maven {
    name "fsShare"
    url "/share/pkg"
}