非多项目环境的Gradle依赖关系

时间:2014-03-28 11:34:15

标签: eclipse maven gradle

经过一番研究,我能够创建一个包含两个项目的非多项目。听起来很奇怪? ISN'吨。您没有将所有项目置于一个根项目之下,这是正常的。

阅读了很多关于多项目构建的内容我想知道,为什么将一个项目与另一个项目一起使用并不是在同一个根项目中这么复杂。

唯一能让我这么做的方法就是使用Maven发布。

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'maven-publish'

group = 'foo'
version = '0.2.1'
repositories {
    mavenCentral()
    mavenLocal()
}
jar { baseName = "${project.group}.${project.name}" }
publishing {
    publications {
        maven(MavenPublication) {
            artifactId "${project.name}"
            artifact sourceJar { classifier "sources" }
            from components.java
        }
    }
}
task sourceJar(type: Jar) { from sourceSets.main.allJava }
task wrapper(type: Wrapper) { gradleVersion = '1.11' }

使用:gradlew clean build publishToMavenLocal在本地maven存储库.m2中的正确位置创建两个jar库(二进制和源代码)

第二个项目,取决于第一个项目有build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'

group = 'foo2'
version = '0.1'
repositories {
    mavenCentral()
    mavenLocal()
}
dependencies {
    compile("foo:Gradle.test2:0.+")
}
jar { baseName = "${project.group}.${project.name}" }
task wrapper(type: Wrapper) { gradleVersion = '1.11' }

为我工作。重建依赖项后,我总是拥有最新版本。

现在为什么在使用Gradle时需要Maven解决方法?我无法发布到本地Gradle缓存吗?有哪些替代方案?

1 个答案:

答案 0 :(得分:0)

一旦您知道如何创建项目依赖项而不使用公共根项目很容易:

在第二个项目(ProjectTwo)中,这取决于第一个项目(ProjectOne),将以下内容放在settings.gradle文件中:

include ':ProjectOne'
project(':ProjectOne').projectDir = new File(settingsDir, '../ProjectOne')

上面的第二行假定ProjectOne与ProjectTwo共享相同的父目录,但您可以使用任何相对路径来设置正确的目录位置。现在,您可以在ProjectTwo的build.gradle文件中添加ProjectOne作为依赖项:

dependencies {
    compile project(':ProjectOne')
}