【问题标题】:Skip building jar in Gradle groovy scripts project在 Gradle groovy 脚本项目中跳过构建 jar
【发布时间】:2016-02-15 16:43:03
【问题描述】:

我有一个 gradle groovy 项目,我只有不在源目录中的 groovy 脚本,而是一个单独的目录。此外,我还有 groovy junit 测试,用于测试使用 groovy shell 调用它们的脚本。

我有一个运行测试的 gradle 构建,然后将脚本压缩到单独的 zip 文件中,并将它们上传到 maven repo。问题是,gradle 还创建并上传了一个 jar 文件。由于源目录中没有文件,因此 jar 仅包含生成的清单文件。

实际上我根本不需要 jar。是否可以将 gradle 配置为不为 groovy 项目创建 jar 文件?

我使用 uploadArchives 任务上传工件。

我的完整 gradle 配置:

group 'groupName'
version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'maven'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

task scriptsZip(type: Zip) {
    from 'scripts'
}

artifacts {
    archives file: scriptsZip.archivePath, type: 'zip', classifier: 'scripts', builtBy: scriptsZip
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://C:\\testRepo")
        }
    }
}

【问题讨论】:

    标签: gradle groovy


    【解决方案1】:

    您可以使用onlyIf 条件修改jar 任务,以在满足(或不满足)某些条件时跳过构建jar

    jar {
       onlyIf { /*some condition*/ }
    }
    

    在你的情况下,检查你的主源集中是否有任何源文件可能是有意义的:

    jar {
       onlyIf { !sourceSets.main.allSource.files.isEmpty() }
    }
    

    【讨论】:

    • 现在我收到一个错误:“任务':uploadArchives'的执行失败。”因为 jar 不存在。
    • 您是否使用 uploadArchives 发布您的 zip?你能显示你的 uploadArchives 配置吗?
    • uploadArchives { repositories { mavenDeployer { repository(url: "file://C:\\testRepo") } } }
    • 请将此信息添加到您的问题中。另外,你如何构建你的 zip?
    • 事实证明,maven-publish 插件比 maven 插件效果更好,您可以定义为只有 zip 工件。
    猜你喜欢
    • 2022-10-09
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多