Gradle Jar将Vue包装成Spark

时间:2018-04-05 03:46:10

标签: gradle vue.js packaging spark-framework

我正在使用Spark Java后端捆绑Vue UI。
两个模块都是独立构建的,具有以下结构:

  project
  +-- backend
  |   +-- src
  |   |   +-- main
  |   |       +-- resources
  |   |           +-- public <= Where the jar is picking the static files
  |   +-- build
  |       +-- libs <= Gradle Jar output
  +-- ui
      +-- dist <= Vue build output

在后端,Gradle正在将backend/src/main/resources/public捆绑到Jar /public中。因此,我将ui/dist复制为backend/src/main/resources/public作为jar任务依赖项。

  task copyUI(type: Copy) {
      from( '../ui/dist')
      into( 'src/main/resources/public')
  }

  jar.dependsOn( copyUI)

Gradle正在复制文件,但在创建jar后 换句话说,我必须创建两次才能使它正确。

如何指示Gradle在打包/公开之前等待复制完成

我的build.gradle jar部分看起来像这样

jar {
    manifest {
        attributes(
                'Main-Class': 'tld.domain.MainClass'
        )
    }
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
        configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

1 个答案:

答案 0 :(得分:2)

虽然你所做的事情对我来说似乎合乎逻辑(并且没有错误),但我没有看到gradle不等到复制完成的原因。我可以建议做一点点不同。

您可以直接指示jar任务从../ui/dist块中的from加载文件。这样,您就不必将任何内容复制到public目录。

jar {
    // ...
    from( '../ui/dist')
}

这更好,因为public可以保持生成代码的清理(通过构建ui项目)并节省复制时间(并且可能因此而产生问题)。

最后让jar任务dependsOn成为UI项目的构建任务,以便../ui/dist

中可以使用最新的dist