我有一个项目被分成两个子项目。
/project
/sub-project-a (backend with JAVA source which is compiled into JAR file)
/sub-project-b (frontend sources which are compiled with grunt via gradle call)
build.gradle
settings.gradle (contains include 'sub-project-a', 'sub-project-b')
我的问题如何创建包含子项目和外部lib依赖项的War文件?剪切的以下代码是我当前的build.gradle:
apply plugin: 'war'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
compile project(':sub-project-a')
compile project(':sub-project-b')
compile 'com.google.code.gson:gson:2.2.4'
}
task copy(type: Copy) {
from 'sub-project-a/build', 'sub-project-b/build'
into 'build'
}
build.dependsOn clean, copy
war {
archiveName 'project.war'
}
一个细节很重要。 java上下文监听器(深入内部项目代码)使用已编译的后端作为WEB-INF/lib
文件夹中的jar文件。这意味着无法从WEB-INF/classes
文件夹中轻松使用所有类文件。
正如您所看到的,我使用了dependencies
和自定义copy
任务。我不确定什么是正确的gradle方式。我该怎么做?
解
使用war.from
方法定义,获取静态来源。
gradle docu 来自(sourcePaths) - 指定副本的源文件或目录。给定的路径是 根据Project.files()进行评估。
我更改了build.gradle
apply plugin: 'war'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
war {
archiveName 'project.war'
from 'sub-project-a/build/dist', 'sub-project-b/build/dist'
}
答案 0 :(得分:4)
解决方案(干净地关闭这个问题)可耻地从问题的创始人那里获取; - )
使用“war.from”方法定义子项目依赖项,从中获取静态源。
gradle documentation摘录:from(sourcePaths) - 指定源文件或目录 一份副本。给定的路径按照Project.files()进行评估。
Ronny改变了build.gradle
apply plugin: 'war'
version '1.0.0'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.code.gson:gson:2.2.4'
}
war {
archiveName 'project.war'
from 'sub-project-a/build/dist', 'sub-project-b/build/dist'
}