如何从Gradle

时间:2015-10-28 10:38:05

标签: gradle maven-publish

我有一个静态xml文件,我想使用maven-publish插件从Gradle发布到Maven存储库(我现在的本地Maven存储库)。

build.gradle看起来像这样:

apply plugin: 'maven-publish'

group 'com.example.gradletest'
version '1.0-SNAPSHOT'

publishing {
    publications {
        beta(MavenPublication) {
            artifactId 'feature-file'
            artifact 'src/main/resources/features.xml'
        }
    }
}

这有效,但我想添加一个分类器,我应该在哪里定义它? https://docs.gradle.org/current/userguide/publishing_maven.html在第68.2.2节中说过应该可以这样做:

publishing {
    publications {
        beta(MavenPublication) {
            artifactId 'feature-file'
            artifact ('src/main/resources/features.xml') {
                classifier 'features'
            }
        }
    }
}

然后我收到了这个错误:

配置根项目'testapplication'时出现问题。

  

执行模型规则时抛出异常:org.gradle.api.publish.plugins.PublishingPlugin $ Rules#publishing(org.gradle.api.plugins.ExtensionContainer)   没有方法签名:java.io.File.call()适用于参数类型:(build_101arjzoe908rdkh5aikrn6bt $ _run_closure5_closure16_closure19_closure20)值:[build_101arjzoe908rdkh5aikrn6bt $ _run_closure5_closure16_closure19_closure20 @ 2aa7399c]   可能的解决方案:wait(),any(),wait(long),each(groovy.lang.Closure),any(groovy.lang.Closure),list()

使用以下解决方案将正确添加分类器,但也会将pom.xml中的打包从<packaging>xml</packaging>更改为<packaging>pom</packaging>。我不希望这样。

publishing {
    publications {
        beta(MavenPublication) {
            artifactId 'feature-file'
            artifact source: 'src/main/resources/features.xml', classifier: 'features'
        }
    }
}

2 个答案:

答案 0 :(得分:0)

使用指定here的地图语法。

publishing {
    publications {
        beta(MavenPublication) {
            artifactId 'feature-file'
            artifact source: 'src/main/resources/features.xml', classifier: 'features'
        }
    }
}

答案 1 :(得分:0)

添加pom { packaging 'xml' }

适合我(gradle 3.2.1)

publishing { publications { beta(MavenPublication) { artifactId 'feature-file' artifact source: 'src/main/resources/features.xml', classifier: 'features' pom { packaging 'xml' } } } }