Java 如何配置gradle以解决依赖关系

Java 如何配置gradle以解决依赖关系,java,gradle,subproject,Java,Gradle,Subproject,我正在尝试将我的MAVEN构建移动到gradle 因此,我需要解决以下问题: 项目: 应用程序(此应用程序将创建一个fatjar) 插件(应生成单个jar文件,但不生成胖jar!) UTIL(需要:jarX、jarY、jarZ) 数据(需要:utils、jarX、jarY) 控件(需要:数据、UTIL、jarY) 我的工作是为每个插件创建一个jar(但我必须完整地定义它的依赖项,这实际上是gradle的工作) 所以我所做的就是创建jar文件,手动将它们复制到reposiory并声明对这些

我正在尝试将我的
MAVEN
构建移动到
gradle
因此,我需要解决以下问题:

项目:

  • 应用程序(此应用程序将创建一个fatjar)
插件(应生成单个jar文件,但不生成胖jar!)

  • UTIL(需要:jarX、jarY、jarZ)
  • 数据(需要:utils、jarX、jarY)
  • 控件(需要:数据、UTIL、jarY)
我的工作是为每个插件创建一个jar(但我必须完整地定义它的依赖项,这实际上是gradle的工作)

所以我所做的就是创建jar文件,手动将它们复制到
reposiory
并声明对这些文件的依赖关系

所以我所期望的是,我只需要告诉应用程序需要控件,因为控件已经包含了所需的任何内容(还包括下面的依赖项)

我想我必须定义一个项目(是的,我阅读了gradle的帮助页面,但我无法完成)

所以现在我在每个插件中都有settings.gradle,但我读到的是错误的。 我应该在根目录中只有一个settings.gradle

根目录:settings.gradle:

include ':application', ':controls', ':data', ':util'
根目录:build.gradle

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.glazedlists:glazedlists:1.11.0'
        classpath 'org.jooq:jooq:3.12.1'
        classpath 'org.controlsfx:controlsfx:8.40.12'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
plugins {
    id 'java-library'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
每个插件都有: 格雷德尔先生

buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.glazedlists:glazedlists:1.11.0'
        classpath 'org.jooq:jooq:3.12.1'
        classpath 'org.controlsfx:controlsfx:8.40.12'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
plugins {
    id 'java-library'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8
但这也不起作用


提前感谢

假设您需要进行多项目设置,请执行以下操作:

格雷德尔酒店 格雷德尔先生
utils
:build.gradle
数据
:build.gradle
控件
:build.gradle
应用程序
:build.gradle
buildscript块的dependencies块定义了构建脚本所需的依赖项,即gradle任务本身所需的依赖项,而不是项目的依赖项。例如,Read,以及什么“不起作用”?您面临的问题是什么?它无法解决所包含插件的插件。这种语言令人困惑。您第一次使用“插件”一词的意思是什么?第二次使用的意思是什么?即“gradle没有解决所包含子项目的依赖关系”。对不起,我确实开发了一个应用程序(项目)它有多个部分(子项目,eclipse会称之为插件)——依赖项可能是jar文件或其他部分/子项目/插件
plugins {
    id 'java-library'
}

ext {
    jarXVersion = '1.x'
    jarZVersion = '1.x'
}

dependencies {
    implementation "org.example:jarX:$jarXVersion"
    api "org.example:jarZ:$jarZVersion" // "api" because none of the other projects depends on this jar
}
plugins {
    id 'java-library'
}

dependencies {
    implementation project(':utils') // Also inherits "jarX"
}
plugins {
    id 'java-library'
}

dependencies {
    implementation project(':data') // Also inherits "project:utils"
}
plugins {
    id 'application'
}

application {
    mainClassName 'my.package.Main'
}

dependencies {
    implementation project(':controls')
}