Gradle 持续集成和渐变:作为依赖项的外部项目
我有一个基于Gradle的项目,外部项目作为依赖项 设置。渐变Gradle 持续集成和渐变:作为依赖项的外部项目,gradle,continuous-integration,Gradle,Continuous Integration,我有一个基于Gradle的项目,外部项目作为依赖项 设置。渐变 include ':app' include ':mylibrary' project(':mylibrary').projectDir = new File('/path/to/my/library') 我与我的应用程序同时开发mylibrary,这就是为什么我将它以这种方式包含在我的项目中,而不是作为依赖项(我必须在每次更改中上载工件,或者将jar复制到libs文件夹中,这很乏味) 我的问题是,当我提交应用程序的更改时,Jen
include ':app'
include ':mylibrary'
project(':mylibrary').projectDir = new File('/path/to/my/library')
我与我的应用程序同时开发mylibrary
,这就是为什么我将它以这种方式包含在我的项目中,而不是作为依赖项(我必须在每次更改中上载工件,或者将jar
复制到libs
文件夹中,这很乏味)
我的问题是,当我提交应用程序的更改时,Jenkins build失败,因为它找不到模块mylibrary
(显然,因为它在我的本地文件系统中)
我该怎么处理呢 您应该在工作区中处理两个gradle项目:
mylibrary
(依赖于myapp
)mylibrary
当修改
mylibrary
时,您应该对其进行测试,如果测试通过,则将其提交到源存储库和二进制存储库。(如果您不想手动执行此操作,您可以配置3个Jenkins作业,build我只是通过这种方式解决了相同的问题
在app
中添加mylibrary
作为适当的依赖项。app
生成将尝试从配置的远程Maven或Ivy repo中提取库
当您更改mylibrary
时,您可能希望使该更改立即对app
可见,而无需发布到二进制repo。您可以通过使用:mylibrary:PublishToAvenLocal
任务来完成此操作,该任务将二进制库放入~/.m2/reposity
中。这只需要一个额外的命令即可完成我认为还不错。这假设新的Maven发布服务器正在mylibrary
中使用:
apply plugin: 'maven-publish'
接下来,需要指示app
从那里获取依赖项:
repositories {
mavenLocal()
//other repos
}
app:compileJava
任务现在应该先检查本地Maven回购,然后再检查远程回购
我发现这种方法比taringamberini的答案更可取,因为您不必将尚未准备好供客户发布的更改发布到库中。您甚至可以在将库更改合并到主库中之前,测试对mylibrary
的更改是否不会中断应用程序
(您不想发布对二进制repo的更改,这些更改不在master
中。这将导致灾难…)