2012-07-16 31 views
13

我构建的jar文件不使用Gradle Jar任务(我需要在我的任务中使用Ant任务)。如何配置uploadArchives以便能够在指定的存储库中安装JAR。Gradle:如何将自定义JAR文件上传到Maven存储库

我试图覆盖默认神器与

uploadArchives { 
    repositories { 
     mavenDeployer { 
      // some Maven configuration 
     } 
    } 
} 

artifacts { 
    archives file: file('bin/result.jar') 
} 

但我发现了一个错误,有可能不是2级的文物与同类型和分类,这意味着这种配置增加了,而重写的配置。

回答

20

你是对的,artifacts闭包只能给给定的配置添加工件(参见ArtifactHandler API)。

你有两个选择:

1)所描述的here添加的伪影滤波器(见章45.6.4.1 “每个项目中的多个文物”)。如果您使用此,尝试宣告你的archives配置,如:

artifacts { 
    archives file: file('bin/result.jar'), name: 'result', type: 'jar' 
} 

这样,你这样的事情在你的伪影滤波器:

addFilter('result') {artifact, file -> 
    artifact.name == 'result' 
} 

2)上传它作为一个单独的Maven模块。如果result.jar是您上传的唯一jar,这可能是一个好的解决方案。

configurations { 
    resultArchives 
} 

uploadResultArchives { 
    repositories { 
    mavenDeployer { 
     repository(url: "same/url/here") 
    } 
    } 
} 

artifacts{ 
    resultArchives file: file('bin/result.jar') 
} 

希望这有助于。

+0

感谢您的解决方案。后者在我的情况下是一种魅力。 – 2012-07-16 13:52:01

+0

我得到一个错误Gradle DSLmethod未找到'uploadResultArchive',我已经应用了插件maven。任何其他插件需要 – sver 2016-03-31 12:14:41

+1

@sver我想他的意思是_uploadArchives_ – zaxme 2017-05-15 09:54:55

相关问题