Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将多项目内置Gradle配置为内置根项目并单独构建?_Java_Android_Gradle_Build - Fatal编程技术网

Java 如何将多项目内置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

我在Gradle中配置多项目构建时遇到问题

我的项目结构是:

├── 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'