androID { // Publish both deBUG and release publishNonDefault true}uploadArchives { repositorIEs.mavendeployer { def majorVersion = 1 def minorVersion = 1 def buildVersion = project.propertIEs.get('RELEASE','0').toInteger() addFilter('release') { artifact,file -> file.name.contains('release') } addFilter('deBUG') { artifact,file -> file.name.contains('deBUG') } activePomFilters.each { filter -> pom(filter.name) { groupID = 'com.redacted' artifactID = 'redacted' packaging = 'aar' version = "${majorVersion}.${minorVersion}.${buildVersion}" if (!project.hasProperty('RELEASE')) { version += "-SNAPSHOT" } if (filter.name == 'deBUG') { artifactID += '-deBUG' } } } }}
预期交付是:
com/ redacted/ redacted/ 1.1.0-SNAPSHOT/ redacted-deBUG/ 1.1.0-SNAPSHOT/
这是按预期发生的,但它似乎发布了带有额外后缀的工件(它打破了依赖项发现),我无法弄清楚它来自何处或如何更改它.我看到的是:
com/redacted/redacted/1.1.0-SNAPSHOT/ redacted-1.1.0-20150717.213849-1-release.aar redacted-1.1.0-20150717.213849-1-release.aar.md5 redacted-1.1.0-20150717.213849-1-release.aar.sha1 redacted-1.1.0-20150717.213849-1.pom redacted-1.1.0-20150717.213849-1.pom.md5 redacted-1.1.0-20150717.213849-1.pom.sha1
出于某种原因,它将日期以及–release后缀附加到仅与AAR相关的文件,而不是POM文件.如果我手动重命名这些文件,一切都按预期工作.例如,这是我期望输出的内容:
com/redacted/redacted/1.1.0-SNAPSHOT/ redacted-1.1.0-20150717.213849-1.aar redacted-1.1.0-20150717.213849-1.aar.md5 redacted-1.1.0-20150717.213849-1.aar.sha1 redacted-1.1.0-20150717.213849-1.pom redacted-1.1.0-20150717.213849-1.pom.md5 redacted-1.1.0-20150717.213849-1.pom.sha1
如何更改这些文件的传送方式?
解决方法 你遇到的是这个(强调我的):important: When enabling publishing of non default,the Maven publishing plugin will publish these additional variants as extra packages (with classifIEr). This means that this is not really compatible with publishing to a maven repository. You should either publish a single variant to a repository OR enable all config publishing for inter-project dependencIEs.
请参阅文档:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication
您看到的后缀释放和调试是通过启用非默认工件的发布而引入的分类器. < artifact> build / ivy.xml中的元素(用作Maven配置的基础)包含这些分类器.
迭代配置中的工件并删除分类器不起作用.虽然允许设置分类器,但保留其原始值.
但是,包装原始工件的工作原理是什么.对于分类器,包装器将始终返回null.这确实导致发布和调试工件具有相同的完全限定ID(=名称分类器),这导致仅发布一个工件.这可以通过使用调试工件的不同名称来修复:
class UnclassifIEdPublishArtifact implements PublishArtifact { private PublishArtifact delegatee; private boolean isDeBUGArtifact; UnclassifIEdPublishArtifact(PublishArtifact delegatee,isDeBUGArtifact) { this.delegatee = delegatee this.isDeBUGArtifact = isDeBUGArtifact } @OverrIDe String getname() { return delegatee.name + (isDeBUGArtifact ? '-deBUG' : '') } @OverrIDe String getExtension() { return delegatee.extension } @OverrIDe String getType() { return delegatee.type } @OverrIDe String getClassifIEr() { return null } @OverrIDe file getfile() { return delegatee.file } @OverrIDe Date getDate() { return delegatee.date } @OverrIDe TaskDependency getBuildDependencIEs() { return delegatee.buildDependencIEs }}project.afterEvaluate { configurations.each { configuration -> def artifacts = configuration.artifacts if (!artifacts.isEmpty()) { def unclassifIEdArtifacts = [] unclassifIEdArtifacts.addAll(artifacts.collect { classifIEdArtifact -> new UnclassifIEdPublishArtifact(classifIEdArtifact,classifIEdArtifact.classifIEr == 'deBUG') }) artifacts.clear() artifacts.addAll(unclassifIEdArtifacts) } }}
我无法从文档中了解项目依赖性的后果,因此您应该检查这些是否仍然有效.
总结以上是内存溢出为你收集整理的在Android库项目中为AAR工件指定已部署的文件名全部内容,希望文章能够帮你解决在Android库项目中为AAR工件指定已部署的文件名所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)