跳过在GradleGroovy脚本项目中构建jar

跳过在GradleGroovy脚本项目中构建jar,gradle,groovy,Gradle,Groovy,我有一个GradleGroovy项目,其中我只有groovy脚本,它们不在源目录中,而是在一个单独的目录中。此外,我还有groovy junit测试,使用groovy shell测试调用它们的脚本 我有一个gradle构建来运行测试,然后将脚本压缩到单独的zip文件中,并将它们上传到maven repo中。问题是,gradle还创建并上传了一个jar文件。由于源目录中没有文件,jar只包含生成的清单文件 实际上,我根本不需要jar。是否可以将gradle配置为不为groovy项目创建jar文件

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

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

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

我使用uploadArchives任务上传工件

我的完整渐变配置:

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")
        }
    }
}

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

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

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

现在我得到一个错误:“任务执行失败”:uploadArchives“。因为jar不存在。您是否使用uploadArchives发布zip?您可以显示您的uploadArchives配置吗?uploadArchives{repositories{mavenDeployer{repository(url:“file://C:\\testRepo”)}}}请将此信息添加到您的问题中。另外,您如何构建zip?事实证明,maven发布插件比maven插件工作得更好,您可以定义只有zip工件。
jar {
   onlyIf { !sourceSets.main.allSource.files.isEmpty() }
}