我有一个类似于
的项目结构//Directory structure
Root Folder/
projectA/
build.gradle
projectB/
build.gradle
properties.gradle
现在,项目B依赖于项目A
Project B的settings.gradle和build.gradle如下
settings.gradle
include ':ProjectA'
project(':ProjectA').projectDir = new File(settingsDir, '../ProjectA')
的build.gradle
dependencies{
compile project(':ProjectA')
}
当我尝试在我的本地计算机上构建项目B时(Gradle版本3.2),它成功构建并且一切看起来都很好。
当我尝试在jenkins中构建相同的项目时(与我的本地相同的gradle版本),我收到错误
Caused by: org.gradle.api.artifacts.UnknownConfigurationException: Configuration with name 'default' not found.
看起来像詹金斯,它无法找出相对路径。
我该如何解决这个问题?
在jenkins中是否有一种方法我可以忽略gradle中的依赖项并使用pre build编译ProjectA并将其放在类路径中?如果是这样我们怎么做呢?
答案 0 :(得分:0)
我能够通过添加一个jenkins属性来解决这个问题,我在构建文件中检查了
if (project.hasProperty('jenkins')) {
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
} else {
dependencies {
compile project(':ProjectA')
}
}
因此,当我们在本地构建它时,因为我们没有传递属性,所以它能够编译ProjectA。在Jenkins,构建作业中,在gradle命令中,我传递了以下 -Pjenkins clean build 。这将转到if条件并从projectA中提取jar并将其放在lib目录中。
这解决了我的问题,让我知道是否有更好的解决方案