apply plugin: 'java' apply plugin: 'war' /* apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin' gretty { port = 80 contextPath = '/' servletContainer = 'jetty9' } */ apply plugin: 'eclipse-wtp' apply plugin: 'jetty' jettyRun { httpPort = 80 } apply plugin: 'rebel' buildscript { repositories { mavenCentral() } dependencies { classpath group: 'org.zeroturnaround', name: 'gradle-jrebel-plugin', version: '1.1.2' } } sourceSets { main { resources { // 条件排除spring security配置文件 exclude getExcludeSpringSecurityXmlFilePath() // 遍历src/main/resources/spring/projects文件夹,如果不是本项目的文件夹,则添加exclude命令 new File(webProjectDir + "/src/main/resources/spring/projects").eachDir{ if (it.name != projectName){ exclude 'spring/projects/' + it.name + '/**' } } // 遍历src/main/resources/config文件夹,如果不是本项目的文件夹,则添加exclude命令 new File(webProjectDir + "/src/main/resources/config").eachDir{ if (it.name != projectName){ exclude 'config/' + it.name + '/**' } } } } } ext.webAppClassesDir = "../ssts-web/src/main/webapp/WEB-INF/classes" configurations { // other configurations e.g. - providedCompile.exclude module: 'commons-logging' all*.transitive = false } // 1. Get dependencies from Maven local repository // 2. Get dependencies from Maven central repository repositories { ivy { // URL can refer to a local directory url "../localrepo/" } mavenLocal() mavenCentral() jcenter() } //Project dependencies dependencies { runtime 'org.apache.neethi:neethi:3.0.2' runtime 'jackson:jackson-all:1.9.11' runtime 'org.quartz-scheduler:quartz:2.2.1' //runtime 'com.mchange:c3p0:0.9.2.1' runtime 'com.mchange:c3p0:0.9.5.2' runtime 'com.mchange:mchange-commons-java:0.2.11' runtime 'javax.transaction:jta:1.1' //runtime 'net.sourceforge.jtds:jtds:1.3.1' runtime 'com.microsoft.sqlserver:sqljdbc4:4.0' runtime 'dom4j:dom4j:1.6.1' runtime 'bsh:bsh:2.0b1' runtime 'activation:activation:1.1' runtime 'antlr:antlr:2.7.7' runtime 'net.sf.ezmorph:ezmorph:1.0.4' runtime 'wsdl4j:wsdl4j:1.6.2' runtime 'org.freemarker:freemarker:2.3.16' runtime 'ognl:ognl:3.0.6' runtime 'cglib:cglib:3.2.0' runtime 'cglib:cglib-nodep:3.2.0' runtime 'xom:xom:1.2.5' runtime 'xml:xmlschema-core:2.0.3' runtime 'org.springmodules:spring-modules-validation:0.8' runtime 'commons-attributes:commons-attributes-api:2.1' runtime 'commons-chain:commons-chain:1.1' runtime 'commons-cli:commons-cli:1.0' runtime 'commons-codec:commons-codec:1.3' runtime 'commons-discovery:commons-discovery:0.2' runtime 'commons-el:commons-el:1.0' runtime 'commons-httpclient:commons-httpclient:3.0' runtime 'commons-jxpath:commons-jxpath:1.2' runtime 'commons-validator:commons-validator:1.3.1' runtime 'xalan:xalan:2.5.1' runtime 'org.codehaus.groovy:groovy-all:1.7.5' runtime 'xml-resolver:xml-resolver:1.2' runtime 'xerces:xercesImpl:2.7.1' runtime 'xml-apis:xml-apis:1.0.b2' runtime 'xml:xmlsec:1.5.7' runtime 'org.apache.xmlbeans:xmlbeans:2.5.0' runtime 'org.opensaml:xmltooling:1.3.2' runtime 'woodstox:woodstox-core-asl:4.4.0' runtime 'woodstox:stax2-api:3.1.4' runtime 'org.apache.velocity:velocity:1.6.3' runtime 'org.apache.commons:commons-jci-core:1.1' runtime 'org.apache.commons:commons-jci-fam:1.1' runtime files ('../localrepo/libs/ojdbc6.jar') runtime group: 'fckeditor', name: 'FCKeditor', version:'2.3' } war{ // 排除lib和classes文件夹,因为war命令会把src\main\java和src\main\resources的所有文件打包进war文件 // 如果不排除,会导致war包内的文件重复 exclude 'WEB-INF/lib/*' exclude 'WEB-INF/classes/**' // 排除各项目的定制文件,本项目需要的文件已经拷贝为web.xml exclude 'WEB-INF/web-*.xml' // 排除webapp/disinfectsystem/config文件夹下非本项目的配置文件 new File(webProjectDir + "/src/main/webapp/disinfectsystem/config").eachDir{ if (it.name != projectName && it.name != 'default'){ exclude 'disinfectsystem/config/' + it.name + '/**' } } } // 返回打包时需要排除的sping security xml配置文件的路径 // 做了单点登录后,中大五院的spring security有自己的xml配置,打包时需要根据项目类型进行选择性的打包 // 如果是中大五院的项目,Spring Security的XML配置文件,使用在projects\zd5y文件夹下的 def getExcludeSpringSecurityXmlFilePath() { if (projectName == 'zd5y'){ return 'spring/applicationContext-acegi-security.xml' } else{ return 'spring/projects/zd5y/applicationContext-acegi-security.xml' } } task cleanDir { println "运行任务1:cleanDir,删除WEB-INF/lib与WEB-INF/classes文件夹下的所有文件" FileTree tree = fileTree (dir: webAppLibDir); tree.each { File file -> delete(file) } delete webAppClassesDir } task copyToWebappClasses { println "运行任务2:copyToWebappClasses:拷贝classes与资源文件到WEB-INF/classes" copy { from './build/classes/main' into webAppClassesDir include '**/*.*' } copy { from './build/resources/main' into webAppClassesDir include '**/*.*' exclude getExcludeSpringSecurityXmlFilePath() } } task copyDependenciesToLibDir() { println "运行任务3:copyDependenciesToLibDir:拷贝依赖jar包到WEB-INF/lib" copy { from configurations.runtime into webAppLibDir exclude { details -> details.file.name.contains('servlet-api') || details.file.name.contains('jsp-api') } //println 'copyDependencies excuted!' } } task prepareWebXmlFile() { println "运行任务4:prepareWebXmlFile:准备web.xml文件,使用标准的或者项目定制的web.xml文件" // web.xml文件名的后缀 def suffix = 'standard' if (projectName == 'zd5y' || projectName == 'cszxyy'){ suffix = projectName } // 拷贝各项目的web.xml,更名为web.xml copy { from webInfDir + '/web-' + suffix + ".xml" into webInfDir rename ('web-' + suffix + ".xml", 'web.xml') } } copyToWebappClasses.dependsOn cleanDir copyDependenciesToLibDir.dependsOn copyToWebappClasses prepareWebXmlFile.dependsOn copyDependenciesToLibDir // build结束后,自动运行准备web.xml文件的任务,以及该任务所依赖的任务 build.finalizedBy(prepareWebXmlFile) //war.dependsOn copyDependenciesToLibDir