Dav*_*les 13 intellij-idea gradle
我有两个Gradle项目,我们称之为蓝色和绿色.绿色取决于蓝色,如下所述build.gradle:
repositories {
mavenLocal()
}
dependencies {
compile 'org.example:blue:1.0'
}
Run Code Online (Sandbox Code Playgroud)
Blue使用Maven插件构建适当的工件:
apply plugin: 'maven'
group = 'org.example'
version = '1.0'
Run Code Online (Sandbox Code Playgroud)
如果我install在Blue上运行任务,它会创建一个JAR和一个POM并将它们放入我的~/.m2/repository,没问题.
我将Blue导入build.gradle到我的IDEA项目中,它为Blue创建了一个模块,同样没问题.
如果我现在将Green导入build.gradle到我的IDEA项目中,它会为Green创建一个模块,从存储库中获取Mavenized版本的Blue,创建一个相应的库,并将Blue库作为依赖项添加到Green模块.
但是,如果我现在在Blue中进行代码更改,那么代码更改不会在Green中获取.Green将继续使用Maven存储库中现在陈旧的副本.获得蓝色更改的唯一方法是重新安装Blue,至于重构Blue中的某些内容并将重构覆盖为Green中的用法,请忘掉它.问题.
如何让IDEA识别我的Gradle项目与其相应的IDEA模块之间的相互依赖性?
编辑添加:多模块实际上不是一个选项,因为所涉及的依赖项在多个应用程序项目之间共享(更不用说其他共享库项目),并且不能完全适合单个分层目录结构.
编辑添加:为了指向我最终想出的内容,请参阅此答案.当您想要同时处理项目及其依赖项时,仍然需要手动创建多模块项目,但它允许您或多或少地自由地交换源和二进制依赖项.
发现了以下解决方法:
导入绿色后build.gradle,打开绿色模块的模块设置(或在项目结构下选择它).然后,在Dependencies选项卡上,手动添加'live'依赖项并将它们移到列表中的Gradle版本之上:

这将通过Green上的"刷新外部项目"持续存在build.gradle,这在您编辑它以添加第三方库等时很有用.
请注意,您可以删除Gradle版本(Gradle: blue-2.0-snapshot等),但在刷新项目时会重新添加它们.
另外值得注意的是:这将允许您一起实时编辑和重构蓝色,黄色和绿色,但如果您因任何原因需要进行Gradle构建(例如,如果您使用Gradle的jettyRun任务来启动Web应用程序),那么我需要确保你Gradle- install蓝色和黄色,因为(只要我们不谈论多模块项目)Gradle只会使用repo的罐装版本.
| 归档时间: |
|
| 查看次数: |
5381 次 |
| 最近记录: |