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)
- UTIL(需要:jarX、jarY、jarZ)
- 数据(需要:utils、jarX、jarY)
- 控件(需要:数据、UTIL、jarY)
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')
}