Java 格拉德尔将引发多场战争

Java 格拉德尔将引发多场战争,java,gradle,war,Java,Gradle,War,我正在从事一系列项目,这些项目最终将整合为一个庞大的总体父项目(根据管理层的指示)。我的任务是使用Gradle查看是否可以将所有7个项目合并为一个项目,但在构建父项目时,需要创建7个独立的独立项目 以下是拟议的项目结构: ParentProject - src/main/java/Controllers - project A - setupController.java - project B - setupControl

我正在从事一系列项目,这些项目最终将整合为一个庞大的总体父项目(根据管理层的指示)。我的任务是使用Gradle查看是否可以将所有7个项目合并为一个项目,但在构建父项目时,需要创建7个独立的独立项目

以下是拟议的项目结构:

ParentProject
  - src/main/java/Controllers
      - project A
           - setupController.java
      - project B
           - setupController.java
      - project C
           - setupController.java
  - src/main/java/Models
      - project A
           - model.java
      - project B
           - model.java
      - project C
           - model.java
  - src/main/webapps
      - parent_project
           - web.xml
           - css
              - common.css
              - projectA.css
              - projectB.css
              - projectC.css
           - js
               - common.js
               - projectA.js
               - projectB.js
               - projectC.js
开发人员运行构建脚本时,应创建3个独立的war文件(projectA.war、projectB.war和projectC.war)

以下是projectA预期的归档内容:

ProjectA.war
    - src/main/java/Controllers
       - setupController.java
    - src/main/java/Models
       - model.java
    - src/main/webapps
       - web.xml
       - css
          - common.css
          - projectA.css
       - js
          - common.js
          - projectA.js
我是Gradle的新手,我想看看是否:

  • 格雷德尔能做到吗
  • 有什么好的资源来证明这一点吗
  • 是的,格雷德尔能做到
  • 可能不是——这看起来不是个好主意
  • 一种更为惯用的方法可能是创建一个包含子项目的超级项目:

    ParentProject
      - build.gradle
      - project A
        - build.gradle
        - controllers/
        - models/
        - webapps/
      - project B
        - build.gradle
        - controllers/
        - models/
        - webapps/
      - ...
    

    将项目分开,但将它们全部放在父项目的子目录中。您可以有一个父级
    build.gradle
    文件,它会为每个子项目触发一个
    build.gradle
    文件。将所有内容都混在一起的理由是什么?问题在于所有项目都可能共享资源(模型、DAO、jsp、css、js等)。我们希望能够在每个项目中重用这些组件,而不必将文件从一个项目复制到另一个项目。为您的共享内容制作一个库项目,即项目C,并将其作为依赖项包含在a和B中。@Armand-您能解释一下“库项目”是什么意思吗?如果你看上面的代码片段,我不相信传统的库项目可以处理这个问题。他们正在寻找基于您希望部署的项目动态构建一场战争。在上面的示例中,您可以选择构建projectA、projectB或projectC。因此,如果我正在构建projectA,它的代码库将不包含任何来自projectB或projectC的代码,除了“通用”包中的代码。问题在于所有项目都可能共享资源(模型、DAO、jsp、css、js等)。我们希望能够在每个项目中重用这些组件,而不必将文件从一个项目复制到另一个项目