【问题标题】:Gradle publish multiple independent artifactsGradle 发布多个独立的工件
【发布时间】:2013-09-21 06:26:42
【问题描述】:

我有一个使用 Gradle 和 ivy-publish 插件构建的项目。除了构建一个 JAR 之外,build.gradle 还执行一个运行任务,该任务执行 XmlFileGenerator.main(),生成 5 个 XML 文件(分别称为 A、B、C、D 和 E)。我希望将这些 XML 文件中的每一个都发布到我们的 Ivy 存储库;每个都应该有相同的组和版本,但是不同的模块和不同的文件名,并且每个都应该有自己的 ivy.xml,只列出自己。

我可以设置已发布文件的文件名,但模块名称与我的项目名称保持相同,因此我的所有 XML 文件都以相同的模块名称而不是独立的模块名称发布.

例如,我希望 A.xml 发布在 {myLocalIvyRootDir}\my-group\A\{version}\xmls\A-{version}.xml,我希望 B.xml 发布在 {myLocalIvyRootDir}\my-group\B\{version}\xmls\B-{version}.xml。但是,A 在{myLocalIvyRootDir}\my-group\my-project\{version}\xmls\A-{version}.xml 发布,B 在{myLocalIvyRootDir}\my-group\my-project\{version}\xmls\B-{version}.xml 发布。

这是 build.gradle 的相关子集(仅显示 A,但不显示 B-E):

apply plugin: 'ivy-publish'

group = 'my-group'

publishing {
    publications {
        ivy(IvyPublication) {
            artifact jar
        }
        aXml(IvyPublication) {
            artifact('target/A.xml') {
                name = 'A'
                extension = 'xml'
                type = 'xml'
            }
        }
    }
}

mainClassName = 'my-group.my-project.XmlFileGenerator'

我尝试使用以下代码在出版物上定义模块属性:

        aXml(IvyPublication) {
            module 'A'
            artifact('target/A.xml') {
                name = 'A'
                extension = 'xml'
                type = 'xml'
            }
        }

但我收到以下错误消息:

> org.gradle.api.internal.MissingMethodException: Could not find method module() for arguments [A] on org.gradle.api.publish.ivy.internal.publication.DefaultIvyPublication_Decorated@32384c50.

我尝试使用如下代码动态更改 rootProject.name:

publishing {
    publications {
        ivy(IvyPublication) {
            artifact jar
        }
        project.metaClass.getName {"A"}
        aXml(IvyPublication) {
            artifact('target/A.xml') {
                name = 'A'
                extension = 'xml'
                type = 'xml'
            }
        }
    }
}

这没有产生错误,但也没有改变行为。

我觉得我可能只是错过了一些小东西,但不知道它是什么。谁能指出我正确的方向?

【问题讨论】:

    标签: gradle ivy


    【解决方案1】:

    事实证明,在这些属性可用之前,这个特定的项目仍然指向 Gradle 1.6(它们是在 1.7 中添加的)。因此,所需要的只是指向 1.7,一切都按预期工作。

    【讨论】:

      猜你喜欢
      • 2014-01-17
      • 2021-02-19
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2018-11-03
      • 2013-03-30
      相关资源
      最近更新 更多