首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分级子项目排序和生成jar (弹簧引导+角)

分级子项目排序和生成jar (弹簧引导+角)
EN

Stack Overflow用户
提问于 2018-01-22 12:12:45
回答 2查看 2.6K关注 0票数 2

我是纽比的一员。我有以下项目设置:

根部

  • 核心:包含弹簧引导2应用程序
  • ui:角5前端应用程序

目标:我想从我的根文件夹中运行“gradle build”,它应该包含一个jar文件,其中包含了一个角应用程序。

我的“ui”被覆盖了:

代码语言:javascript
复制
apply plugin: "com.moowork.node"

    buildscript {
        repositories globalRepositories
        dependencies {


       classpath "com.moowork.gradle:gradle-node-plugin:1.2.0"
    }
}

node {
    // based on current version of Angular 5
    version = "8.9.1"
    npmVersion = "5.6.0"
    download = true
}

task buildAngular(type: NpmTask) {
    args = ['run', 'build']
}

buildAngular.dependsOn(npm_install)
build.dependsOn(buildAngular)

上面的gradle定义将在静态后端核心应用程序中构建和生成角文件。

“核心”gradle构建文件看起来如下(我排除了依赖项),没有什么特别之处:

代码语言:javascript
复制
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'xxx.xxxxxx'
version = '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

buildscript {
    repositories globalRepositories
    ext {
        springBootVersion = '2.0.0.M7'
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

jar {
    baseName = 'spring-boot-angular'
    version = '1.0.0'
}

我怎么才能让这一切成为可能?当我从根项目运行“gradle build”时,我希望触发以下操作:

  1. 在ui中运行第一个“分级构建”
  2. 然后在内核中运行第二次运行“分级构建”
  3. 使用从“core”生成的jar文件作为最终结果

我不能忍受groovy那样的语法,不能等待Gradle Kotlin DSL成熟:P

希望有人能帮忙。当我准备好这个设置时,我将开源这个设置(连同Spring 5、Hibernate 5和flyway)。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-22 17:28:10

您需要在后端(核心)构建中生成的jar中包含前端(ui) buildAngular任务的结果:

代码语言:javascript
复制
bootJar {
  dependsOn ':ui:buildAngular'

  into('BOOT-INF/classes/static') {
    from "${project(':ui').projectDir}/dist"
  }
}

bootJar任务现在依赖于前端的buildAngular任务,这将使gradle根据需要对它们进行排序。

您可以使用基本相同的设置浏览我的这个项目以获得一个示例(除非它使用纱线而不是npm来解决依赖关系)

票数 5
EN

Stack Overflow用户

发布于 2018-01-22 21:44:37

JB Nizet的回答应该有效。还可以在根级文件中添加以下内容:

代码语言:javascript
复制
build.dependsOn("core:build").mustRunAfter("ui:build")

在我看来,上面的答案更干净。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48381349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档