我有一个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")
}
}
}
您可以使用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服务