当前位置: 首页 > 知识库问答 >
问题:

未添加到POM文件的依赖项- Android Gradle Maven发布

戚飞虎
2023-03-14

我使用maven发布插件将aar文件发布到maven存储库。然而,我注意到编译依赖项没有添加到pom中。甚至在我添加了传递属性之后。我使用的是com.android.tools.build:gradle:1.1.3

关于如何解决这个问题有什么提示吗?

build.gradle

publishing {
    publications {
        sdkAar(MavenPublication) {
            artifacts {
                groupId 'com.test'
                artifactId 'my_sdk'
                version currentVersion
                artifact 'build/outputs/aar/release.aar'
                artifact androidJavadocsJar {
                    classifier "javadoc"
                }
            }
        }
        sdkJar(MavenPublication) {
            groupId 'com.test'
            artifactId 'my_sdk_jar'
            version currentVersion
            artifact 'build/libs/release.jar'
            artifact androidJavadocsJar {
                classifier "javadoc"
            }
        }
    }
    repositories {
        maven {
            credentials {
                username archiva_username
                password archiva_password
            }
        }
    }
}

提前致谢

共有3个答案

孙成益
2023-03-14

请尝试此代码,我尝试成功。

//generate pom nodes for dependencies
            pom.withXml {
                def dependenciesNode = asNode().appendNode('dependencies')
                configurations.implementation.allDependencies.each { dependency ->
                    def dependencyNode = dependenciesNode.appendNode('dependency')
                    dependencyNode.appendNode('groupId', dependency.group)
                    dependencyNode.appendNode('artifactId', dependency.name)
                    dependencyNode.appendNode('version', dependency.version)
                }
            }
金嘉言
2023-03-14

依赖项未自动添加,您需要添加发布标记。

publishing {
    publications {
        aar(MavenPublication) {
            groupId libraryGroupId
            version = libraryVersion
            artifactId libraryArtifactId
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")

            pom.withXml {
                def dependencies = asNode().appendNode('dependencies')
                configurations.getByName("_releaseCompile").getResolvedConfiguration().getFirstLevelModuleDependencies().each {
                    def dependency = dependencies.appendNode('dependency')
                    dependency.appendNode('groupId', it.moduleGroup)
                    dependency.appendNode('artifactId', it.moduleName)
                    dependency.appendNode('version', it.moduleVersion)
                }
            }
        }
    }
阎慈
2023-03-14

如果希望将依赖项自动添加到 POM,则需要使用组件功能。以下是用户指南中的一个示例:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

很重要。我不知道的是Android插件是否设置了自己的软件组件。我看不出任何关于这些事情的参考。

请记住,新的发布机制目前正在酝酿中,也许这就是为什么Android插件目前不提供任何直接支持。

如果您真的想要使用发布插件,您可以获取工件的运行时依赖项,并使用用户指南中描述的语法将它们手动添加到POM中。我不推荐这种方法,因为它很乱,而且容易出错。

 类似资料:
  • 我有一个分层的2.4项目,如下所示: 对于每个子项目,我想发布一个.jar文件和一个.pom文件,并将它们存储在maven存储库中。所有常规命令都正确导出到 *.pom 文件中。 假设 中有一个 依赖项。此依赖项将不包含在生成的 *.pom 文件中。 我的gradle发布结构如下所示: ...我做错什么了吗?为什么我的依赖项不会被导出到*. pom文件中?有什么解决方法吗?为了澄清,我期望上面示例

  • 我将buildSrc文件夹添加到我的android项目中,以便在我的gradle脚本中使用kotlin-dsl。现在我想在buildSrc main中添加一个包含函数的kotlin文件,我将在gradle.kts脚本中使用该文件(buildSrc->src->main->kotlin->thefile.kt)。在其中一个中,我想使用。我看到这可以在中使用。如何将这种依赖关系包含到buildSrc文

  • maven shade插件正在创建一个名为dependency reduced pom的文件。xml和artifactname都有阴影。jar并将它们放置在基本目录中。 这是虫子吗?应位于目标目录中。有解决办法吗?

  • 我试图在pom中为ojdbc14添加依赖项。xml 操作系统: WindowsXP(sp3)IDE: ECLIPSE(Juno)DB: Oracle 10G 我在eclipse中使用m2e插件。 我遵循添加ojdbc14的步骤。maven本地存储库中的jar > 创建一个新项目 执行命令“mvn install:install file-Dfile=“D:\oracle10g\jdbc\lib\o

  • 我正在尝试写添加发送电子邮件给我用java编写的应用程序,我发现了一个很好的指南。http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/ 但是如何添加和依赖项? 我添加了依赖项,但我得到 “线程”main“中的异常java.lang.RuntimeException:javax.mail.Messa