在Gradle的多项目中,如何给出依赖关系以及结构是什么?
我有一个使用Gradle构建的多项目,Gradle有一个java项目,它将依赖于web项目。当我使用eclipse构建时,我已经将javaProj和webProj的依赖关系赋予了webprojectEAR,并且它可以工作(在部署之后) .ear文件需要使用single build run创建,该文件包含以下内容在Gradle的多项目中,如何给出依赖关系以及结构是什么?,gradle,build.gradle,Gradle,Build.gradle,我有一个使用Gradle构建的多项目,Gradle有一个java项目,它将依赖于web项目。当我使用eclipse构建时,我已经将javaProj和webProj的依赖关系赋予了webprojectEAR,并且它可以工作(在部署之后) .ear文件需要使用single build run创建,该文件包含以下内容 - lib javaProj.jar - META-INF - webProj.war 我的项目结构如下 - javaProj build.gradle - webP
- lib
javaProj.jar
- META-INF
- webProj.war
我的项目结构如下
- javaProj
build.gradle
- webProj
build.gradle
- webProjEAR
build.gradle
- settings.gradle
我正在尝试运行webProjEAR/build.gradle文件,其中的依赖项如下
project(':webProjEAR') {
dependencies {
compile project(':javaProj')
compile project(':webProj')
}
}
它失败,错误为“无法解析配置“webProjEAR:testRuntime”的所有依赖项。当我单独运行构建文件时,我可以创建jar和war文件
请任何人都能帮助我如何在构建文件中提到依赖关系。以及,在哪里有build.gradle文件
==从此处添加到原始问题的更多信息===
我的构建文件如下。我已经做了Igor Popov提到的更改
// javaProj/build.gradle
apply plugin: 'java'
repositories {
flatDir { dirs "../local-repo" }
}
sourceSets {
main {
java.srcDir "$projectDir/src"
resources.srcDir "$projectDir/XML"
}
}
jar {
from ('classes/com/nyl/xsl') {
into 'com/nyl/xsl'
}
}
dependencies {
compile group: 'slf4j-api' , name: 'slf4j-api' , version: '1.5.6'
compile group: 'slf4j-jdk14' , name: 'slf4j-jdk14' , version: '1.5.6'
compile group: 'com.ibm.xml.thinclient_1.0.0' , name: 'com.ibm.xml.thinclient_1.0.0' , version: '1.0.0'
compile group: 'junit', name: 'junit', version: '4.11'
compile group: 'saxon9' , name: 'saxon9'
compile group: 'saxon9-dom' , name: 'saxon9-dom'
compile group: 'xmlunit' , name: 'xmlunit' , version: '1.4'
}
==============================================
// webProj/build.gradle
apply plugin: 'war'
repositories {
flatDir { dirs "../local-repo" }
}
webAppDirName = 'WebContent'
dependencies {
providedCompile group: 'com.ibm.xml' , name: 'com.ibm.xml'
providedCompile group: 'com.ibm.ws.prereq.xdi2' , name: 'com.ibm.ws.prereq.xdi2'
providedCompile group: 'com.ibm.ws.xml.admin.metadata' , name: 'com.ibm.ws.xml.admin.metadata'
providedCompile group: 'guava' , name: 'guava' , version: '11.0.2'
providedCompile group: 'j2ee' , name: 'j2ee'
providedCompile group: 'slf4j-api' , name: 'slf4j-api' , version: '1.5.6'
providedCompile group: 'slf4j-log4j12' , name: 'slf4j-log4j12' , version: '1.5.6'
}
====================================================
// webProjEAR/build.gradle
apply plugin: 'java'
apply plugin: 'ear'
repositories {
flatDir { dirs "../local-repo" }
}
dependencies {
compile project(':javaProj')
compile project(':webProj')
}
ear {
appDirName 'src/main/app'
libDirName 'APP-INF/lib'
from ('../javaProj/build/libs') {
into 'lib'
}
from ('../webProj/build/libs') {
into '/'
}
}
我想知道roojProj/build.gradle文件中应该包含哪些内容。我还想知道上述文件中需要更改的内容。谢谢,整体结构应该如下所示:
rootProj
javaProj
build.gradle
webProj
build.gradle
webProjEAR
build.gradle
settings.gradle
build.gradle
settings.gradle
文件应包含:
include 'javaProj', 'webProj', 'webProjEAR'
对于webProjEAR/build.gradle
,您可以删除项目(':webProjEAR')
。因此它应该是这样的:
dependencies {
compile project(':javaProj')
compile project(':webProj')
}
若要修复出现的错误,您还应该发布
webProjEAR
的所有依赖项(如果您还有其他未包含的依赖项)。您所说的“我正在尝试运行webProjEAR/build.gradle文件”到底是什么意思?您到底在做什么来获得“无法解决…”错误?我已按如下方式更改了结构。(正如伊戈尔·波波夫所建议的那样)rootProj-javaProj build.gradle-webProj build.gradle-webProjEAR build.gradle-settings.gradle-build.gradle需要使用单个gradle运行命令创建.ear文件。javaProj需要创建.jar,webProj需要创建.war,两者都依赖于webProjEAR.Pl请告诉我如何做到这一点,以及每个build.gradle文件中的强制命令是什么。非常感谢Igor Popov的回答和快速响应。我已将构建文件添加到原始问题中。还想知道rootProj/build.gradle文件中应包含哪些内容。再次感谢。嗨,Igor Popov,你能帮助我吗要解决这个问题吗?谢谢!@DLP:关于rootProj/build.gradle
你经常需要它,例如在向构建脚本类路径添加新插件时,但这似乎不是你的情况,因此你可以不用它。