在我的项目中,我们使用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文件都生成并在
目标目录结构。
答案 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
}