java - 将其他根项目包括在gradle多项目中

标签 java gradle

我有以下结构:

文件夹“MyProject”

------ Root Project 'MyProject_gradle'                                                                                                      
------ Subproject 'MyProject_library'                                                                                                      
------ Subproject 'MyProject_game'                                                                                                      
------ Sub Root Project 'jme3'                                                                                                      
------ ------ Subproject 'jme3-core'                                                                                                      
------ ------ Subproject 'jme3-lwjgl3'                                                                                                      

根项目正确地包括两个子项目。但是,当我包含子根项目“jme3”时,它将作为普通子项目包含在内。换句话说,未加载子项目,因为未加载jme3子根项目的settings.gradle。

我想要的是:包括“jme3”也应包括其子项目,并将其设置仅应用于其子项目。
MyProject_gradle/build.gradle:
allprojects {
    project.ext {
        retroFlashyRPG = [
                basicName : 'RetroFlashyRPG_',
                prototypeName : 'RetroFlashyRPG_Prototype_'
        ]
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    group = 'com.chevreuilgames'

    sourceCompatibility = 1.9
    targetCompatibility = 1.9

    repositories {
        mavenCentral()
        jcenter()

        maven {
            url "https://dl.bintray.com/stephengold/org.jmonkeyengine/"
        }
    }

    project.ext {
        jme = [
                group : 'org.jmonkeyengine',
                version : '3.1.0-stable'
        ]
    }
} 
MyProject_gradle/settings.gradle:
def RetroFlashyRPG = "RetroFlashyRPG_" // This is MyProject in this post's example
def RetroFlashyRPG_Prototype = RetroFlashyRPG + "Prototype_"

include 'prototype-library'
include 'jme3'

project(":prototype-library").projectDir = new File(settingsDir, "../${RetroFlashyRPG_Prototype}Library")
project(":jme3").projectDir = new File(settingsDir, "../${RetroFlashyRPG_Prototype}jmonkeyengine")
MyProject_jme3/settings.gradle:
/**
 * This is the global settings file used by all subprojects.
 **/
rootProject.name = 'jmonkeyengine'

// Core classes, should work on all java platforms
include 'jme3-core'
include 'jme3-effects'
include 'jme3-networking'
include 'jme3-plugins'
include 'jme3-terrain'

// Desktop dependent java classes
include 'jme3-desktop'
include 'jme3-blender'
include 'jme3-jogl'
include 'jme3-lwjgl'
include 'jme3-lwjgl3'

// Other external dependencies
include 'jme3-jbullet'
include 'jme3-niftygui'
include 'jme3-jogg'
include 'jme3-android'
include 'jme3-ios'

//native builds
include 'jme3-bullet' //java
include 'jme3-bullet-native' //cpp
include 'jme3-bullet-native-android' //cpp
include 'jme3-android-native' //cpp

// Test Data project
include 'jme3-testdata'

// Example projects
include 'jme3-examples'

if(buildAndroidExamples == "true"){
    include 'jme3-android-examples'
}

最佳答案

在当前版本的Gradle(v4.4)中,无法完成我希望实现的目标。相反,我选择有两个单独的多个项目,并使用编译文件在本地选择所需的jar。

另一个更简单的选择是从maven插件执行“安装”任务。然后,添加mavenLocal()存储库。该任务将 jar 发布到本地Maven存储库,该Maven存储库可像远程存储库一样进行访问。

关于java - 将其他根项目包括在gradle多项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819232/

相关文章:

gradle - spring boot jsps 没有被渲染

java - Google guava ImmutableList equals 方法返回与 java.utils.List 不同的结果,破坏了 List-Interface 契约?

java - 检查字符串是否仅包含特定数字(例如 "111")

android - google 和 maven 存储库之间的 play-services-measurement-base 版本不匹配

gradle - 使用Gradle将org.apache.kafka添加到依赖项

database - 没有数据库的 JHipster 应用程序

javascript - 哪个 HTTP 代码应该作为状态返回?

java - maven中排除关键字

java - 在 tomcat 7 上运行 jersey servlet 的 servlet init 异常

android - Android Studio Gradle 4.1更新以在Project Regard APT上给出错误