我有一个项目,分为两个子项目.
/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')
Run Code Online (Sandbox Code Playgroud)
我的问题是如何创建包含子项目和外部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'
}
Run Code Online (Sandbox Code Playgroud)
一个细节很重要.java上下文监听器(深入内部项目代码)使用编译后端作为文件WEB-INF/lib
夹中的jar文件.这意味着无法从WEB-INF/classes
文件夹中轻松使用所有类文件.
正如你所看到的,我玩了dependencies
一个自定义copy
任务.我不确定什么是正确的gradle方式.我该怎么做?
解
使用war.from
方法定义,获取静态源.
gradle docu from(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'
}
Run Code Online (Sandbox Code Playgroud)
解决方案(用于彻底关闭问题),可耻地从问题的发起者那里获取;-)
使用“ war.from”方法定义子项目依赖项,从中获取静态源。
gradle文档摘录:from(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'
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4912 次 |
最近记录: |