gpt4 book ai didi

scala - 将Gradle/IDEA项目转换为多个子项目

转载 作者:行者123 更新时间:2023-12-03 03:40:09 31 4
gpt4 key购买 nike

我有一个IntelliJ IDEA (Community Edition 2016.2) project,它是通过导入文件系统项目创建的,该文件系统项目的根内部定义了build.gradlesettings.gradle。当我在IDEA中打开它时,一切运行正常。

如您在GitHub上所见,基本项目目录结构当前为:

intellij-scala-gradle-example/
src/
main/
scala/
resources/
test/
scala/
resources/
build.gradle
settings.gradle

我现在想将此项目转换为3个较小的子项目,以便项目目录结构如下:
intellij-scala-gradle-example/
client/
src/
main/
scala/
resources/
test/
scala/
resources/
shared/
src/
main/
scala/
resources/
test/
scala/
resources/
server/
src/
main/
scala/
resources/
test/
scala/
resources/
build.gradle
settings.gradle

我可以处理在命令行上运行的所有 mkdir并以物理方式重组文件系统上的目录,但是我不确定:
  • 我需要做些什么,以便Gradle理解我现在拥有这3个client/shared/server/子项目;和
  • 我不确定我需要做什么,以便IDEA拾取所有这些更改并正确地编译东西

  • 显然,“共享”项目中的任何类(在 shared/src/main/scala之下)或资源(在 shared/src/main/resources之下)对于 client/server/都是可见的。但是客户端永远都不能“看到”服务器类/资源,反之亦然。

    有什么想法(没有双关语),我怎么能做到这一点,以及这里的事件顺序是什么?

    更新:此屏幕快照显示了添加到项目中的子项目,但IDEA并未将它们视为Scala子项目(我无法将软件包和Scala源代码添加到任何子项目中)。

    enter image description here

    最佳答案

    正如我已经告诉您的那样,您不会将scala插件应用于子项目,因此它们不是scala项目,因此无法识别目录。您仅将scala插件应用于根项目,但这与子项目无关。

    无论使用

    allprojects {
    apply plugin: 'scala'

    repositories {
    jcenter()
    mavenCentral()
    }

    dependencies {
    compile 'org.scala-lang:scala-library:2.11.8'
    }
    }

    使所有项目都在build scala项目中,或者
    subprojects {
    apply plugin: 'scala'

    repositories {
    jcenter()
    mavenCentral()
    }

    dependencies {
    compile 'org.scala-lang:scala-library:2.11.8'
    }
    }

    只为子项目做,或者
    apply plugin: 'scala'

    repositories {
    jcenter()
    mavenCentral()
    }

    dependencies {
    compile 'org.scala-lang:scala-library:2.11.8'
    }

    在每个单独的构建脚本或项目中,您都希望成为Scala项目。

    如果这样做,IJ也可以正确识别源文件夹。

    对于依赖项,只需根据需要声明它们。

    根据您的情况添加
    dependencies {
    compile project(':shared')
    }

    client/build.gradleserver/build.gradle,或从根项目构建脚本执行此操作,例如
    configure([project(':server'), project(':client')]) {
    dependencies {
    compile project(':shared')
    }
    }

    关于scala - 将Gradle/IDEA项目转换为多个子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42661352/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com