关于IntelliJ文件夹结构的Gradle

时间:2015-12-18 22:34:02

标签: java intellij-idea gradle

我需要帮助,包括已经存在的项目中的Gradle。

我的主要问题是项目结构不是“默认”Gradle结构。我的Idea项目中还有三个项目,这使得它更加困难。

我的项目:

  • 客户端
  • 服务器
  • 共享(如在客户端和服务器之间的共享代码中)

这是我的文件夹结构:

  • 所有MyApplication
    • SRC
      • COM
        • elmac
          • 客户端
          • 服务器
          • 共享

所以我为我的课程获得了很好的URL样式包。 (即:com.elmac.client.Main)

我的具体问题

我必须在哪里放置哪些gradle文件,以及我要在文件中写什么,以便创建两个.JAR文件(客户端和服务器依赖于共享 - > Shared不需要jar文件)。

我对几十个教程感到困惑,每个教程都包含与我的不相似的类似结构。我还没弄明白如何包含我的项目(我甚至不知道在这个项目结构中放置哪个文件!)

1 个答案:

答案 0 :(得分:1)

我不理解你的理由“所以我为我的课程获得了很好的URL样式包。”即使您将它们拆分为子项目并使用更标准的目录结构,您也会得到它。然后,您可以让客户端和服务器子项目依赖于共享子项目(作为jar或直接与项目依赖项一样)。

但是,要回答您的问题,您可以从build.gradle中定义不同的源集开始:

sourceSets {
    client {
        java {
            srcDirs = ["$projectDir/src"]
            include '**/client/**'
        }
...
}

然后将这些编译到build dir中的单独目录中。然后你可以从这些源集构建你的jar:

task clientJar(type: Jar) {
    from sourceSets.client.output
}

你可能会遇到IntelliJ的问题,因为它只有一个输出目录用于main,一个用于每个模块中的测试,所以你不能使用IntelliJ compile&再运行(例如,当运行单个单元测试时),您将不得不使用gradle任务运行所有内容。