具有项目依赖性的Gradle工作流程

时间:2015-09-18 00:00:17

标签: java intellij-idea gradle

我想知道人们如何与Gradle一起开发日常工作以及他们如何管理内部依赖关系。

假设我们有一个主项目,其中包含以下内部依赖关系:

proj depends on dep1
proj depends on dep2
proj depends on dep3

现在,这些依赖关系也可能相互依赖:

dep1 depends on dep2, dep3

我希望能够基本上同时开发它们,我有一个主项目(proj),所有它的依赖项(dep1,dep2,dep3)在IntelliJ或其他IDE中打开。这样,当一个项目中的代码发生变化时,我可以告诉IDE构建并运行它,它将负责为我构建依赖项。此外,代码正在快速发展,这使我能够立即看到我在项目之间发生了某些错误。

现在,在proj的build.gradle文件中,我有类似于以下内容的依赖项:

dependencies {
    compile project('ext:dep1')
    compile project('ext:dep2')
    compile project('ext:dep3')
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.3'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.3'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

其他依赖项目从源代码管理中检出到$ proj / ext / dep [1..3]。这很棒,但是我不得不担心dep1及其依赖项。现在我可以递归地执行相同类型的事情,其中​​dep1也会将dep2和dep3签出到$ proj / ext / dep1 / ext / dep [2..3],但是当我更新$ proj时,dep1将不会更新/ext/dep[2..3]。

我觉得这可能是一个固定的东西,可能是一个符号链接或其他东西,但我想知道我是否只是偏离日常发展应该如何。

这也可以通过拥有二进制存储库(Archiva,Nexus等)来解决,但我觉得构建依赖项,推送到存储库,然后在构建过程中让Gradle下载它的过程太复杂了它是什么。更不用说这将涉及为每个项目和依赖项打开一个单独的IntelliJ窗口,而对于上面描述的场景,它是一个打开依赖项目的窗口。当我遇到问题时,我也无法立即知道。

我希望尽可能保持这种通用性,这样任何其他开发人员都可以克隆这个仓库并立即做好准备,而无需确保路径相对于他们的情况排列。其他人有这个问题吗?

0 个答案:

没有答案