Gradle 在生成 war 之前将目录移动到根目录

Gradle move directory to root before war is generated

我有一个 .war,它必须有一个可以通过命令行 运行 的入口点,所以 class 的目录必须在 .war 文件.

如何将目录移动到 war 的根目录?

我试过:

plugins {
    id 'war'
}

war {
    manifest {
        attributes(
            'Main-Class': '____embedded.____EntryPoint'
        )
    }
}

tasks.register('moveEntryPoint') {
    description 'Copies entrypoint to root dir.'
    doLast {
        ant.move file: "${buildDir}/classes/java/main/____embedded/",
                 todir: "${buildDir}/____embedded/"
    }
}

compileJava.finalizedBy(moveEntryPoint)

当我尝试构建时出现此错误:

Received unknown event for /home/username/eclipse-workspace/apex/app/build/classes/java/main/____embedded
Stopping file watching and invalidating VFS after an error happened

有几种方法可以做到这一点:

  1. 不要动,直接复制。 https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Copy.html

然后,将您的任务附加到 processResources

  1. 告诉 war 插件包含一个目录。
war {
    webAppDirectory = file('src/main/webapp')
    from 'src/rootContent' // adds a file-set to the root of the archive
}

https://docs.gradle.org/current/userguide/war_plugin.html#sec:war_customizing