我有一个运行测试的gradle文件.它没有构建任何东西.它只是一个解压缩任务,它将gradle配置中的所有jar提取到特定目录中,然后运行Test类型的任务.此测试任务将testClasses目录指向上一个复制任务已将配置解压缩到的位置.
我的构建失败并显示错误消息:从二进制存储读取数据时出现问题
当我运行'gradle dependencies'时它没有显示任何错误/警告当我单独运行复制任务时,它运行得很好.只有当我运行它失败时才会出错:
> Could not resolve all dependencies for configuration ':testConfig'.$
> Problems reading data from Binary store in /tmp/gradle8793563212642185736.bin (exist: false)$
Run Code Online (Sandbox Code Playgroud)
我看到文件/tmp/gradle8793563212642185736.bin不存在.这可能是什么原因?
我们为不同的项目提供了多个git存储库.还有一个用于基础架构目的的git存储库.我们在此基础结构存储库中编写了自定义gradle插件,我们在其他存储库中使用这些插件
例:
buildscript {
apply from: 'foo/bar/devinfra-buildscript.gradle', to: buildscript
}
apply plugin: 'devinfra'
Run Code Online (Sandbox Code Playgroud)
这里我们在每个Git存储库中都有buildscript {}文件,foo/bar/buildscript.gradle.我想知道是否有一种方法可以直接从基础架构存储库中应用该文件.这样就可以直接在其他存储库中看到任何更改.
如何从gradle运行另一个gradle脚本.我有多个gradle脚本在<root_project>/test目录下运行测试.使用<root_project>/build.gradle要运行的测试gradle文件的名称调用.例如
gradle run_test -PtestFile=foobar
这应该运行<root_project>/test/foobar.gradle(它的默认任务)
什么我目前做的是调用project.exec的run_test任务.这有效但现在我需要将项目属性从运行run_test的gradle进程传递给运行foobar.gradle的进程
我怎样才能做到这一点 ?是否有更多的gradle集成方式从另一个运行gradle脚本,将所有必需的信息传递给子gradle脚本?
我有一个自定义gradle插件,其中添加了自定义任务类型和gradle配置.当我应用这个插件之前maven-publish它完全正常.但是当我在之后添加它时apply plugin: 'maven-publish',它会失败并显示错误消息:
FAILURE: Build failed with an exception.
* Where:
Build file '/scratch/skgupta/git_storage/emdi/integtest/build.gradle' line: 38
* What went wrong:
A problem occurred evaluating root project 'integtest'.
> Cannot configure the 'publishing' extension after it has been accessed.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 7.6 secs
Run Code Online (Sandbox Code Playgroud)
这是build.gradle文件.
buildscript {
repositories {
maven {
url …Run Code Online (Sandbox Code Playgroud) publishToMavenLocal始终发布到〜/ .m2或<LocalRepository>标记的路径集~/.m2/settings.xml.但是,当我设置系统属性时,maven.repo.local它将被忽略.gradle publishToMavenLocal除了settings.xml(我正在寻找项目属性或系统属性或环境变量)之外,是否有一种方法可以在使用时覆盖本地maven存储库的位置.
这是我试过的 gradle -Dmaven.repo.local=/home/skgupta/myrepo build pTML
请帮忙
有没有办法可以获取当前正在执行的任务的详细信息?例如,我想打印正在执行的当前任务的名称等.
我试过这个:
task printMyNameIfYouCan << {
println $task.name
}
Run Code Online (Sandbox Code Playgroud)
但它失败了
Execution failed for task ':printMyNameIfYouCan'.
> Could not find property '$task' on task ':printMyNameIfYouCan'.
Run Code Online (Sandbox Code Playgroud)
注意:我检查了如何在gradle中打印任务名称?,但这不是我在看.
我看到当我在 gradle 中创建自定义任务类型时,包名与“org.gradle”不同,我无法直接在我的构建文件中仅使用类型名称声明任务。我需要给出任务的完全限定名称
如果包是 'foo.bar' 那么
task blockC(type: TestNGBlock) {
testngxml = "tests/testng-lrga-blockC.xml"
}
Run Code Online (Sandbox Code Playgroud)
不工作。我需要写如下:
task blockC(type: foo.bar.TestNGBlock) {
testngxml = "tests/testng-lrga-blockC.xml"
}
Run Code Online (Sandbox Code Playgroud)
有没有像java中的import这样的方法,我可以在其中指定gradle包名来查找解析类型,这样我就可以使用前一种方法来定义任务。
我有两个gradle文件,setup.gradle和tests.gradle;每个都有两个自定义类型“EMTest”的 gradle 任务;
test.gradle 应用“setup.gradle”作为应用:“setup.gradle”
我想配置 EMTest 类型的所有任务;为此,我在tests.gradle末尾添加了以下代码
tasks.withType(EMTest) {
println it.name
}
Run Code Online (Sandbox Code Playgroud)
但这只会打印tests.gradle中的任务名称;
当我跑步时
tasks.all {
println it.name + " " + it.class
}
Run Code Online (Sandbox Code Playgroud)
然而,它列出了 setup.gradle 中定义的任务名称和 EMTest_Decolated 类型(对于所有 4 种类型)
注意:我使用 gradle 1.11(无法控制升级);这里有什么问题?
这是主要文件:
apply plugin: 'java';
apply plugin: 'maven'
apply from: 'emcpsrvs_3n_setup.gradle'
buildscript {
repositories {
maven {
url = "${artifactory_contextUrl}/repo" }
}
dependencies {
classpath group:"com.mycompany.myprod.mymodule", name: "TestInfraPlugin", version: "${testinfraVersion}", transitive: true
classpath group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version:'1.9.13'
classpath group: 'com.mycompany.myprod', name: …Run Code Online (Sandbox Code Playgroud)