Index: build.gradle =================================================================== diff -u -r27951 -r27959 --- build.gradle (.../build.gradle) (revision 27951) +++ build.gradle (.../build.gradle) (revision 27959) @@ -5,18 +5,42 @@ import groovy.json.JsonBuilder import groovy.json.JsonSlurper import groovy.json.StringEscapeUtils +import org.tmatesoft.svn.core.wc.* println 'Gradle....开始编译' println "运行的gradle版本: $gradle.gradleVersion" buildscript { repositories { mavenCentral() } - dependencies { classpath 'org.apache.commons:commons-configuration2:2.1.1', 'commons-beanutils:commons-beanutils:1.9.3'} + dependencies { + classpath 'org.apache.commons:commons-configuration2:2.1.1', 'commons-beanutils:commons-beanutils:1.9.3','org.tmatesoft.svnkit:svnkit:1.10.1' + } } +// 目前获取到的是具体的某个文件或文件夹的版本,不是整个工作区的最新的版本,需要改进 +/* +def getSvnRevision(){ + ISVNOptions options = SVNWCUtil.createDefaultOptions(true); + SVNClientManager clientManager = SVNClientManager.newInstance(options); + SVNStatusClient statusClient = clientManager.getStatusClient(); + SVNStatus status = statusClient.doStatus(project(':ssts-web').projectDir, true); + SVNRevision revision = status.getRevision(); + return revision.getNumber(); +} +*/ + +ext.customLibPath = System.getenv('CUSTOM_LIB_PATH') //全局版本 def globalVersion = '4.1.471'; +ext.svnRevision = '27784' + +println "svn版本: " + svnRevision +println "customLibPath: " + customLibPath +if(null == customLibPath){ + throw new GradleException('需要的环境变量CUSTOM_LIB_PATH没有设置,编译终止!') +} + //获取web项目的文件夹路径 def webProjectDir = project(':ssts-web').projectDir.getAbsolutePath() def getDate() { @@ -25,7 +49,36 @@ return formattedDate } +/** + 将项目编译好的lib包,拷贝到项目个性化lib文件夹,该文件夹按svn版本号进行分类,用于以后的发布项目切换 + currentBuildJavaProjectName: 当前编译的Java项目的名称 + destFolderName: 存放lib文件的文件夹的名称,一般用每个项目的唯一名称作为此文件夹的名称 + 注:本方法内似乎不能有控制台输出的代码,否则rebuild的时候,gradle task会认为是UP-TO-DATE状态,不会拷贝jar文件到指定位置 +*/ +def copyJarOfProjectToCustomLibPath(currentBuildJavaProjectName, destFolderName){ + //outputs.upToDateWhen { false } + String srcDir = project(currentBuildJavaProjectName).buildDir.getAbsolutePath() + "/libs" + + println 'currentBuildJavaProjectName = ' + currentBuildJavaProjectName + println 'destFolderName = ' + destFolderName + + def destDir = customLibPath + "/" + svnRevision + "/" + destFolderName + File fileDestDir = new File(destDir); + if (!fileDestDir.exists()) { + fileDestDir.mkdir(); + } + + // TODO:删除时,只删除文件夹内当前项目所产生的各个版本的jar包,因为还可能有别的子项目的jar包 + delete fileTree(destDir) { + include currentBuildJavaProjectName + '*.jar' + } + + copy{ + from srcDir + into destDir + } +} Parameters params = new Parameters() char aChar = ',' @@ -855,6 +908,11 @@ compile (project(":ssts-diposablegoods")) compile (project(":ssts-expensivegoods")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'gyey') + } + assemble.dependsOn copyJarToLibs } // 长沙中心医院特有代码,HIS及物资系统相关接口的实现 @@ -865,8 +923,49 @@ compile (project(":forgon-tools")) compile (project(":forgon-core")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'cszxyy') + } + assemble.dependsOn copyJarToLibs } +/* +// 中大五院特有代码,HIS及物资系统相关接口的实现,供深圳三院的cas配置参考 +project("ssts-zd5y-misc") { + configurations { + localDeps + localDeps.transitive = false + } + dependencies { + compile (project(":ssts-datasync")) + compile (project(":ssts-basedata")) + compile (project(":forgon-tools")) + compile (project(":forgon-core")) + compile (project(":ssts-diposablegoods")) + compile (project(":ssts-expensivegoods")) + compile (project(":ssts-tousse")) + // 引入CAS client,用户单点登录的身份验证 + localDeps group: 'org.jasig.cas.client', name: 'cas-client-core', version: '3.4.1' + localDeps group: 'org.springframework.security', name:'spring-security-cas',version:springSecurityVersion + compile configurations.localDeps + } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + + copyJarOfProjectToCustomLibPath(project.name,'zd5y') + + // 拷贝依赖的2个jar文件到custom libs文件夹 + def destDir = customLibPath + "/" + svnRevision + "/" + 'zd5y' + copy{ + from configurations.localDeps + into destDir + } + } + assemble.dependsOn copyJarToLibs +} +*/ + // 中大五院特有代码,HIS及物资系统相关接口的实现 project("ssts-zd5y-misc") { dependencies { @@ -878,15 +977,33 @@ compile (project(":ssts-expensivegoods")) compile (project(":ssts-tousse")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'zd5y') + } + assemble.dependsOn copyJarToLibs } -// 惠州市中心人民医院、德阳市人民医院等(如果有其它医院继续扩充)特有代码,SSO登录 +// 广东省人民医院、惠州市中心人民医院、德阳市人民医院、长沙中心医院等(如果有其它医院继续扩充)特有代码,SSO登录 project("ssts-client-misc") { dependencies { compile (project(":ssts-basedata")) compile (project(":forgon-tools")) compile (project(":forgon-core")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'cszxyy') + copyJarOfProjectToCustomLibPath(project.name,'hzszxrmyy') + copyJarOfProjectToCustomLibPath(project.name,'dysyy') + copyJarOfProjectToCustomLibPath(project.name,'gdsy') + copyJarOfProjectToCustomLibPath(project.name,'zjyy') + copyJarOfProjectToCustomLibPath(project.name,'gzzyyfy') + copyJarOfProjectToCustomLibPath(project.name,'bjdxzlyy') + copyJarOfProjectToCustomLibPath(project.name,'gdsrmyyzhyy') + + } + assemble.dependsOn copyJarToLibs } // 广东省医特有代码 @@ -900,6 +1017,14 @@ compile (project(":ssts-expensivegoods")) compile (project(":ssts-tousse")) } + + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'gdsy') + } + assemble.dependsOn copyJarToLibs + //build.finalizedBy(copyJarToLibs) + } // 深圳市中医院特有项目 @@ -910,6 +1035,12 @@ compile (project(":forgon-tools")) compile (project(":forgon-core")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'szszyy') + } + + assemble.dependsOn copyJarToLibs } // 简阳市人民医院特有项目 @@ -920,6 +1051,11 @@ compile (project(":forgon-tools")) compile (project(":forgon-core")) } + // 将本项目的jar包,拷贝到项目个性化配置的lib文件夹 + task copyJarToLibs(){ + copyJarOfProjectToCustomLibPath(project.name,'jysrmyy') + } + assemble.dependsOn copyJarToLibs } project("ssts-maintain") { @@ -1077,8 +1213,42 @@ compile group: 'org.jasig.cas.client', name: 'cas-client-core', version: '3.4.1' // 引入Spring Security CAS的jar包 compile 'org.springframework.security:spring-security-cas:' + springSecurityVersion + //以下依赖的引用,可能要删除,读取工作区的文件的svn版本号信息 + compile group:'org.tmatesoft.svnkit',name:'svnkit',version:'1.10.1' + compile group:'org.tmatesoft.sqljet',name:'sqljet',version:'1.1.13' + compile group: 'org.antlr', name: 'antlr-runtime', version: '3.5.2' + compile group: 'de.regnis.q.sequence', name: 'sequence-library', version: '1.0.4' + + + //读取项目个性化lib包的定义文件 + def libsJsonFile = file('projectCustomLibs.json') + def projectCustomLibList = new groovy.json.JsonSlurper().parseText(libsJsonFile.getText('UTF-8')) + + // ssts-web项目,具有条件依赖,根据发布项目的名称,依赖于不同的jar包,读取项目的依赖配置文件projectCustomLibs.json + projectCustomLibList.eachWithIndex { projectLibsConfig, index -> + println "遍历配置文件:projectCustomLibs.json" + println "配置项目${index+1}: ${projectLibsConfig.projectName} ${projectLibsConfig.libs}" + if (projectName == "${projectLibsConfig.projectName}"){ + println "projectName = " + projectName + println "项目${projectLibsConfig.projectName}具有个性化的lib包,个性化lib如下:" + // 遍历项目的lib包定义 + projectLibsConfig.libs.eachWithIndex { myLibsConfig, myIndex -> + print "Hello jar包${myIndex + 1}: type = ${myLibsConfig.type}," + if ("project" == "${myLibsConfig.type}"){ + println "name = ${myLibsConfig.name}" + compile (project(":${myLibsConfig.name}")) + } + else if ("maven" == "${myLibsConfig.type}"){ + println "group = ${myLibsConfig.name.group},name = ${myLibsConfig.name.name},version = ${myLibsConfig.name.version}" + compile group: "${myLibsConfig.name.group}", name: "${myLibsConfig.name.name}", version: "${myLibsConfig.name.version}" + } + } + } + + } // ssts-web项目,具有条件依赖,根据发布项目的名称,依赖于不同的jar包 + /* if (projectName == 'gyey'){ // 广医二院 compile (project(":ssts-datasync-settlement-gyey-impl")) } @@ -1105,5 +1275,6 @@ else if (projectName == 'jysrmyy'){ // 简阳市人民医院 compile (project(":ssts-datasync-jysrmyy-impl")) } + */ } }