如何在没有dupliactes .class文件的情况下构建war并使用gradle排除java文件

时间:2016-05-31 08:47:37

标签: spring gradle

在我的项目中,我们使用gradle进行builld战争。这个项目遵循MVC结构,我们使用了spring技术,现在我们有了三层Controller,Service,DAO层 但是在弹簧注入的支持下,我们可以将DAO层注入服务层,将服务层注入控制器(View Layer),但我们可以限制将dao层注入控制器层 如果我们尝试这样做而将服务层放入dao层,而构建war gradle则无法构建。

为了完成这项任务,我在build.gradle中完成了更改

    sourceSets {
    gen {
        java {
            srcDir 'app/GeneratedSource'
        }
    }

    dao {
        java {
            srcDir 'app/JavaSource'
            exclude 'gov/fd/vc/svc/**'
        }
        compileClasspath += gen.output
    }

    svc {
        java {
            srcDir 'app/JavaSource'
            exclude 'gov/fd/vc/dao/**'
        }
        compileClasspath += gen.output
        compileClasspath += dao.output
    }

     main {
        java {
            srcDir 'web/JavaSource'
        }
        resources {
            srcDir 'app/GeneratedSource'
            srcDir 'app/JavaSource'
            srcDir 'web/JavaSource'
        }
        compileClasspath += svc.output
    }
}

configurations {
    genCompile.extendsFrom compile
    daoCompile.extendsFrom compile
    svcCompile.extendsFrom compile
}
如果我们尝试将dao层注入到控制器层构建过程中,那么通过执行上述更改将失败。问题是在构建war时,所有.java和重复.class文件都生成并在 目标目录结构。

1 个答案:

答案 0 :(得分:0)

现在只需将main更改为java,就不会出现重复策略并在战争中包含.java文件

sourceSets {
        gen {
            java {
                srcDir 'app/GeneratedSource'
            }
        }

        dao {
            java {
                srcDir 'app/JavaSource'
                exclude 'gov/fd/vc/svc/**'
            }
            compileClasspath += gen.output
        }

        svc {
            java {
                srcDir 'app/JavaSource'
                exclude 'gov/fd/vc/dao/**'
            }
            compileClasspath += gen.output
            compileClasspath += dao.output
        }

         debug {
            java {
                srcDir 'web/JavaSource'
            }
            resources {
                srcDir 'app/GeneratedSource'
                srcDir 'app/JavaSource'
                srcDir 'web/JavaSource'
            }
            compileClasspath += svc.output
        }
    }

    configurations {
        genCompile.extendsFrom compile
        daoCompile.extendsFrom compile
        svcCompile.extendsFrom compile
    }