Java 如何将多项目内置Gradle配置为内置根项目并单独构建?
我在Gradle中配置多项目构建时遇到问题 我的项目结构是:Java 如何将多项目内置Gradle配置为内置根项目并单独构建?,java,android,gradle,build,Java,Android,Gradle,Build,我在Gradle中配置多项目构建时遇到问题 我的项目结构是: ├── Some-Java_project │ ├── build.gradle │ ├── one-java-suproject │ │ └── build.gradle │ └── second-android-subproject │ └── build.gradle ├── settings.gradle └── build.gradle 在settings.gradle中,我有: incl
├── Some-Java_project
│ ├── build.gradle
│ ├── one-java-suproject
│ │ └── build.gradle
│ └── second-android-subproject
│ └── build.gradle
├── settings.gradle
└── build.gradle
在settings.gradle
中,我有:
include ':Some-Java-Project'
include ':Some-Java-Project:one-java-subproject'
include ':Some-Java-Project:one-android-subprojects'
和主gradle.build
文件:
dependencies {
compile project(path: ':Some-Java-Project:one-java-subproject', configuration: "android")
compile project(path: ":Some-Java-Project:one-android-subprojects")
...
}
在
我对某个Java项目有依赖关系:
dependencies {
...
//For Java EE
compile project(path: ':Some-Java_project:one-java-suproject')
//For android
android project(path: ':Some-Java_project:one-java-suproject', configuration: 'android')
android project(path: ':Some-Java_project:second-android-subproject')
...
}
subprojects.each { subproject -> evaluationDependsOn(subproject.path) }
jar.dependsOn subprojects.tasks["copyArtefacts"]
jar {
baseName = 'someName'
manifest {
attributes 'Main-Class': 'some-name'
}
subprojects.each { subproject ->
from fileTree(dir: 'build/classes')
}
}
在每个gradle文件下:somejava项目
我有一个任务:
apply plugin: 'java'
...
//Copy build classes into project root build folder when assembling jar file
task copyArtefacts(type: Copy, dependsOn: 'compileJava') {
from('build/classes/main/')
into('../build/classes')
}
在gradle.build
:一个android子项目中
apply plugin: 'com.android.library'
...
//Copy build classes into project root build folder when assembling jar file
task copyArtefacts(type: Copy, dependsOn: 'build') {
from('build/intermediates/classes/release/')
into('../build/classes')
}
...
这里的主要目标是将android和Java子项目构建为
在其他项目中,获取已编译的类并将它们放在一个jar文件中。
这个jar应该在根项目中使用。
目前,配置正在运行,因为我直接引用子项目(
一个java超级项目和第二个android子项目),作为主根项目中Some-java_项目的叶子。但问题是,当我在其他位置签出某个Java_项目时,我无法简单地运行它
因为并没有设置文件,Gradle也找不到合适的项目,所以我想在根项目中构建项目,并且当源代码作为独立库签出到其他地方时
如果我将设置gradle添加到一些带有配置的Java项目下:
settings.gradle
和更改依赖项它可以工作,但我不想单独添加它。当从存储库中签出时,它应该可以立即工作。无法理解此问题。@MustansarSeed我想在挖掘根项目(将文件夹移动到其他位置)的其他位置签出子项目Some-Java_项目,并且可以在不添加任何文件、更改任何内容的情况下构建它。我不确定是否遵循。settings.gradle不是必需的文件。如果您单独拥有子项目的副本,为什么不能从包含gradle.build的目录中使用
gradle build
进行构建?首先,单个项目构建中不需要@RaGe[settings.gradle]。我的子模块包含另外两个子项目。其次,我无法从根项目中删除[settings.gradle]。它已经存在(生产中)项目,不能这样修改。它将破坏那里的构建逻辑。
include ':one-java-subproject'
include ':one-android-subprojects'