在多模块gradle项目中使用maven-publish插件,无需依赖项的pom.xml

时间:2018-08-02 10:31:06

标签: gradle multi-module maven-publish

我有一个带有子项目的gradle项目。每个子项目都会产生一个jar和一个pom,并将其发布在存储库中

1)在主项目gradle文件中,有一个子项目部分,用于定义发布内容和发布位置:

rootproject.gradle的

片段:

subprojects {
    apply plugin: 'maven-publish'

    publishing {

        publications {
            mavenJava(org.gradle.api.publish.maven.MavenPublication) {
                from components.java
            }
        }

        repositories {
            maven {
                url 'file://c:/temp/repo'
            }
        }
    }
}

2)在我的一个子项目的gradle文件中,我添加了一些依赖项:

subproject.gradle中的

片段:

dependencies {
    compile group: 'my-group', name: 'my-module', version:'1.1.0'
}

如果我从根项目中运行“ 渐变发布”,它将正确发布每个子项目。但是,我注意到与子项目相关的pom出版物中缺少子项目中定义的依赖项

如果我在每个子项目中剪切并粘贴了子项目部分的内容,则生成的pom文件将包含正确的依赖项。 似乎“ fromcomponents.java ”不是对发布任务用来生成pom的东西的引用,但是当您调用该任务时,该任务将准确发布components.java包含的内容。 “从”方法。

一种解决方法,我将根目录中定义的方法移动了子项目代码:

rootproject.gradle

def configurePublishing(project) {
    project.apply plugin: 'maven-publish'
    …
}

然后我从每个子项目中调用它:

subproject.gradle

dependencies {
    compile group: 'my-group', name: 'my-module', version:'1.1.0'
}

configurePublishing(project)

另一种解决方案可以是在子项目部分中添加一个开关,然后在根项目的gradle文件中集中所有内容

subprojects { subProject ->
    switch(subproject.name) {
        case: ‘my-subproject-with-dependencies’ {
            dependencies {
                compile group: 'my-group', name: 'my-module', version:'1.1.0'
            }
            break;
        }
    }

    apply plugin: 'maven-publish'
}

这是可以接受的方法吗?是否有最佳做法可遵循?有更简单的方法吗?

0 个答案:

没有答案
相关问题