Gradle中有名称为war的task,负责war文件打包,如果你的开发环境与发布环境完全相同,那么不需要任何配置,否则需要一些细微的调整。
场景一:不将一些jar文件打包到war文件中
例如jta、servlet、jsp等jar文件在开发环境中是必须使用的,但是不希望被打包到war中,那么可以:
dependencies {
providedRuntime 'javax.servlet:jsp-api:2.0'
providedRuntime 'javax.servlet:servlet-api:2.5'
providedRuntime 'javax.transaction:jta:1.1'
}
将依赖添加到providedRuntime中,则不会出现在war文件中
场景二:classpath文件替换
在dorado-home中configuration.properties文件,在开发环境中通常具有core.runModel=debug内容,但是打包时可不需要出现这些内容,那么可以排除这些文件,使用新的文件:(如果dorado-home在classpath中,例如在src/main/resources下)
processResources {
from('src/main/resources') {
include '**/*'
exclude 'dorado-home/configure*.properties'
}
from('src/production') {
include '**/*'
}
}
利用名称为processResources的task可以完成这个工作。上面的例子将dorado-home放在了main/src/resources文件夹下,而不是WEB-INF下面。通过exclude关键字将dorado-home下configure.properties、configure-debug.properties和configure-test.properties文件排除掉,即不会出现在war文件中,然后将src/production目录(下面具有dorado-home/configure.properties)下的的所有文件复制过来。
场景二:webapp文件替换
如果dorado-home在WEB-INF下面:
war {
copyAction.exclude 'WEB-INF/dorado-home/configure*.properties'
webInf {
from('src/production')
}
}