当前位置:  开发笔记 > Android > 正文

Maven库的可选Gradle依赖项

如何解决《Maven库的可选Gradle依赖项》经验,为你挑选了2个好方法。

我正在开发一个Android库,并且只有在使用我的库的项目包含该依赖项时才想使用依赖项.类似于毕加索与OkHttp所做的事情.

我已经通过检查ClassNotFoundExceptions在主代码上处理了这个问题,但它仍然包含了将其部署到Maven Central的依赖关系.如何生成Maven true标签等内容?

我正在使用gradle-mvn-push通过Gradle部署我的工件.



1> Oleg Estekhi..:

为GRADLE-1749投票.

同时您可以使用pom.withXml方法修改生成的pom文件,例如添加标签或更改值:

apply plugin: 'java'
apply plugin: 'maven-publish'

configurations {
  optional
  compile.extendsFrom optional
}

dependencies {
  compile 'com.some.group:artifact:1.0';
  optional 'com.another.group:optional-artifact:1.0'
}

publishing {
  publications {
    maven( MavenPublication ) {
      from components.java

      pom.withXml {
        asNode().dependencies.dependency.findAll { xmlDep ->
          // mark optional dependencies
          if ( project.configurations.optional.allDependencies.findAll { dep ->
            xmlDep.groupId.text() == dep.group && xmlDep.artifactId.text() == dep.name
          } ) {
            def xmlOptional = xmlDep.optional[ 0 ];
            if ( !xmlOptional ) {
              xmlOptional = xmlDep.appendNode( 'optional' )
            }
            xmlOptional.value = 'true';
          }

          // fix maven-publish issue when all maven dependencies are placed into runtime scope
          if ( project.configurations.compile.allDependencies.findAll { dep ->
            xmlDep.groupId.text() == dep.group && xmlDep.artifactId.text() == dep.name
          } ) {
            def xmlScope = xmlDep.scope[ 0 ];
            if ( !xmlScope ) {
              xmlScope = xmlDep.appendNode( 'scope' )
            }
            xmlScope.value = 'compile';
          }
        }
      }
    }
  }
}



2> gimix..:

该星云额外配置摇篮插件似乎提供可选的.

你会像这样使用它:

apply plugin: 'java'
apply plugin: 'nebula.optional-base'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.apache.commons:commons-lang3:3.3.2', optional
    compile group: 'log4j', name: 'log4j', version: '1.2.17', optional
}

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有