当前位置: 首页 > 知识库问答 >
问题:

跳过在Gradle groovy脚本项目中构建jar

储志业
2023-03-14

我有一个gradle groovy项目,其中我只有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")
        }
    }
}

共有1个答案

井学
2023-03-14

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

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

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

jar {
   onlyIf { !sourceSets.main.allSource.files.isEmpty() }
}
 类似资料:
  • 在第七章 Java构建入门那部分我们使用了 apply() 方法,这个方法是从哪里来的呢? 我们之前说过Gradle在构建脚本中定义了一个项目. 对于构建脚本中每个项目,Gradle 都创建了一个 Project 类型的对象用来关联此项目. 当构建脚本执行时,它会去配置所关联的工程对象. 构建脚本中每个被调用的方法(这些方法并未在构建脚本中定义)都被委托给当前工程对象(使用工程对象引用方法)。 构

  • 请注意:“我编辑了这个问题” 我正在观察一个非常奇怪的情况。我在Jenkins中配置了两个具有相同配置的作业,但其中一个是连续构建,另一个是夜间构建[poll scm configured@middign]使用Sonarqube配置生成报告。 注意:我使用的是maven 3.3.1版本和SonarQube 5.1

  • 这里有一个类似的问题访问项目的额外属性在构建脚本闭包 但是我发现了一个“变通方法”,看起来不像是最佳的 我有一个多gradle项目-我在主gradle文件中使用声明库 现在我还必须设置这些构建脚本,因为我使用插件! 所以再次构建脚本{repositories。。。 现在,我不想两次粘贴URL,而是想使用一个属性——就像我在project中所想的那样。ext属性在buildscript阶段没有设置,

  • 考虑以下Gradle项目结构: 根在哪里构建。gradle的子项目配置如下: 现在,当我在根项目上调用时,它会自动配置两个子项目,然后构建它们——一切都很好。 我也知道我可以用各种方法跳过一个特定的任务(,等),但是当我使用上的任何一个时,Gradle仍然运行所有依赖的任务(,,等),直到最后击中,然后跳过。 我的问题是,有没有办法让Gradle在配置阶段结束后立即停止并转到下一个子项目? 编辑:

  • 介绍 create-umi umi 通过 create-umi 提供脚手架能力,包含: project,通用项目脚手架,支持选择是否启用 TypeScript,以及 umi-plugin-react 包含的功能 ant-design-pro,仅包含 ant-design-pro 布局的脚手架,具体页面可通过 umi block 添加 block,区块脚手架 plugin,插件脚手架 library

  • 问题内容: 我们需要能够在某些环境中跳过子模块。 有问题的模块包含集成测试,并且需要半小时才能运行。因此,我们希望在CI服务器上进行构建时将其包括在内,但是当开发人员在本地进行构建(并运行测试)时,我们希望跳过该模块。 有没有办法通过配置文件设置来做到这一点?我已经进行了一些谷歌搜索,并在这里查看了其他问题/答案,但没有找到一个好的解决方案。 我想一个选择是从父级中完全删除该子模块,然后在CI服务