Gradle子项目排序并生成jar(spring boot + angular)

我是一个Gradle newby。 我有以下项目设置:

  • 核心:包含spring boot 2应用程序
  • ui:角度5前端应用程序

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

我得到了覆盖的“用户界面”:

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定义将在静态后端核心应用程序中构建并生成Angular文件。

‘核心’gradle构建文件看起来像这样(我排除了依赖关系),没有什么特别的:

 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中运行第一个“gradle build”
  2. 然后在核心中运行“gradle build”
  3. 使用’core’生成的jar文件作为最终结果

我受不了Groovy的语法,不能等待Gradle Kotlin DSL成熟:P

希望有人能帮助。 当我把这个设置(和Spring 5,Hibernate 5和flyway一起)的时候我会开源的。 提前致谢。

2 Solutions collect form web for “Gradle子项目排序并生成jar(spring boot + angular)”

您需要在后端(core)内部生成的jar中包含前端(ui)buildAngular任务的结果:

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

bootJar任务现在取决于前端的buildAngular任务,这将使gradle根据需要进行排序。

您可以浏览我的这个项目,使用基本相同的设置(除了使用纱线代替npm来解决依赖关系)

JB Nizet的答案应该工作。 您也可以在根gradle文件中添加以下内容:

 build.dependsOn("core:build").mustRunAfter("ui:build") 

以上回答在我看来是更清洁的。

  • Spring JPA查询总是使用序列扫描而不是索引扫描
  • 春季开机缓存不支持kotlin?
  • 无法获得从Java引导使用memcached的好例子
  • 如何使用X-Pack身份验证为Spring Data Elasticsearch v 3.0.0.M4创建application.yml文件?
  • 在Kotlin中使用@ EnableNeo4jRepositories(basePackageClasses =“myApp”)
  • Kotlin language will be the best programming language for Android.