2017-09-14 46 views
0

我有两个项目A和B位于一个存储库内。 B使用A中的一些函数,所以我想在运行B之前编译A。我发现这可以使用Gradle组合构建完成。我创建了如下结构的Gradle项目。Java Gradle Composite构建无法解决问题

结构:

| 
|--A 
| |src 
| |build.gradle 
| |settings.gradle 
| 
|--B 
| |src 
| |build.gradle 
| |settings.gradle 

A.build.gradle:

apply plugin: 'idea' 

subprojects { 
    apply plugin: 'java' 
    apply plugin: 'idea' 

    group "com.check" 
    version "1.0" 

    repositories { 
     jcenter() 
    } 
} 

A.settings.gradle:

rootProject.name = 'A' 

B.build.gradle:

apply plugin: 'java' 
apply plugin: 'application' 
apply plugin: 'idea' 

group "com.check" 
version "1.0" 

mainClassName = "com.check.B.Inititate" 

dependencies { 
    compile "com.check:A:1.0" 
} 

repositories { 
    jcenter() 
} 

B.settings.gradle:

rootProject.name = 'B' 

B类项目启动方法:

package com.try.run; 
import com.check.A.check; 
public class Initiate { 

    public static void main(String[] args) { 
     System.out.println(check.ret()); 

    } 

} 

构建此使用gradle这个我得到以下错误

CONFIGURE SUCCESSFUL 

Total time: 0.268 secs 
Could not resolve: com.check:A:1.0 

注:我使用ecilipse氧版本和运行的gradle刷新项目,建立项目

+0

在你的例子中,你在** A **的'build.gradle'中有'subprojects'块 - 它不会将它应用到根项目。另外,你如何告诉Gradle有关复合构建设置?你在命令行中使用了'--include-build'还是你想在** B **的'settings.gradle'中使用'includeBuild'? – mkobit

+1

@mkobit我错过了包含构建。请在下面找到我的答案。请让我知道是否有更多的东西应该改变。 – The6thSense

回答

1

我忘了补充上b.settings.gradle以下行:

b.settings .gradle:

includeBuild '../A' 

这之后,它完美地工作。