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

我们如何正确地创建执行阶段任务?

晋言
2023-03-14

这就是我所拥有的理想构建脚本:

我确实想手动执行任务“unzip_natives_os”。但它似乎只在配置阶段起作用。当我用这个设置进行测试运行时,它会给我一个错误:“java.lang.UnsatifiedLinkError”,但是如果我在dependencies块中将配置从“NativeSos”更改为“RuntimeOnly”,它就能正常工作。我是否必须显式地创建这个“ApplicationDefaultJVmargs”并插入本地的libraryPath。还有别的办法吗?当我需要解压缩“nativesos”配置时,它需要一个显式版本,它似乎没有看到平台/BOM?

// build.gradle.kts
val nativesOS : Configuration by configurations.creating {
    this.isTransitive = false
    this.extendsFrom(configurations.runtimeOnly.get())
}
dependencies {
    implementation(platform("org.lwjgl:lwjgl-bom:3.2.3"))
    listOf(
        "", "-assimp", "-openal",
        "-opengl", "-glfw"
    ).map { lib ->
        implementation("org.lwjgl:lwjgl$lib")

        // I give it an explicit version, because it would not work if I unzip this.
        nativeOS("org.lwjgl","lwjgl$lib", "3.2.3", classifier = LWJGL.lwjglNatives)
    }
    ...
}
// unzip_native_os tasks, here is the problem.
tasks.register<Copy>("unzip_native_os") {
    this.group = "zip"
    doLast {
        nativesOS.asFileTree.filter { it.name.contains("natives") }.forEach {
            unzipTo(File("$buildDir/libs/natives-os"), it)
        }
    }
}

编辑:为什么这不起作用?我首先配置它,然后执行它。

tasks.register<Copy>("unzip_native_os") {
    this.group = "zip"
    val nativesJar = nativesOS.asFileTree.filter { it.name.contains("natives") }.files
    doFirst {
        nativesJar.forEach {
            println(">>>> $it")
            unzipTo(File("$buildDir/libs/natives-os/v2"), it)
        }
    }
}

共有1个答案

裘嘉木
2023-03-14

编辑:我找到了一个可能的答案,它看起来很有希望,但我还没有实现它,因为我需要一些学习来建立这种脚本插件/内联插件。下面是链接:gradle自定义任务执行阶段

 类似资料:
  • 我有一个Gradle任务,简单地将文件从一个文件夹复制到另一个文件夹。 当在配置阶段调用copy'from''into'方法时,它可以工作,但当在执行阶段调用它们时,它就不工作了。 这样做是有效的 gradle copyServerConfig 如果我把它放在doFirst{}块中,也会发生同样的事情。 我不明白的另一件事是: gradle task1 但如果我改成这样: gradle task1

  • 我有在Gradle的执行阶段创建和执行任务的需求。 目前,在构建任务期间,我确定并创建了多个添加到taskContainer的任务,使用: 在第一次执行时,我得到以下错误: >任务工件状态缓存(.../.gradle/1.5/taskartifacts)尚未被锁定。 我做错了什么,有没有更好的方法在执行过程中动态添加任务?

  • 我试图正确理解和实现两个并发运行的任务对象使用Python 3相对较新的异步模块。 简而言之,asyncio似乎被设计用于处理异步进程和事件循环上的并发执行。它提倡使用(应用于异步函数)作为无回调的方式来等待和使用结果,而不阻塞事件循环。(期货和回调仍然是可行的选择。) 它还提供了

  • https://docs.gradle.org/current/userguide/custom_tasks.html 如何使此任务在执行阶段运行?正在传递一个空闭包 唯一的解决办法? 但是hello任务似乎是在构建的配置阶段调用的。

  • 如何正确执行collect以获取作为键并将Ethernet对象作为每个流元素的值?

  • 我正在为Joomla 2.5的后端做我的第一个组件。第一部分是确定的,我用通用控制器创建了一个组件,现在我显示了表中的所有元素 为此,我遵循了本教程,但现在我想添加编辑、新建和删除等操作。我遵循这个教程,但当我点击编辑,例如。我翻到白页。我的name组件是,我的表是。 这是用于编辑动作模型/restaurante.php的模型 这是我的模型/表格/表格。xml 在控制器/我有餐厅。php和餐馆。p