Index: build.gradle =================================================================== diff -u -r16831 -r17034 --- build.gradle (.../build.gradle) (revision 16831) +++ build.gradle (.../build.gradle) (revision 17034) @@ -1,5 +1,16 @@ +import org.apache.commons.configuration2.builder.fluent.Parameters +import org.apache.commons.configuration2.* +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder +import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler + println 'Gradle....开始编译' +buildscript { + repositories { mavenCentral() } + dependencies { classpath 'org.apache.commons:commons-configuration2:2.1.1', 'commons-beanutils:commons-beanutils:1.9.2'} +} + + //获取web项目的文件夹路径 def webProjectDir = project(':ssts-web').projectDir.getAbsolutePath() def getDate() { @@ -8,16 +19,80 @@ return formattedDate } -def props = new Properties() -new File(webProjectDir + "/src/main/resources/jdbc.properties").withInputStream { - stream -> props.load(stream) -} +Parameters params = new Parameters() +char aChar = ',' + +FileBasedConfigurationBuilder builder = + new FileBasedConfigurationBuilder(PropertiesConfiguration.class) + .configure(params.properties() + .setFileName(webProjectDir + "/src/main/resources/jdbc.properties") + .setListDelimiterHandler(new DefaultListDelimiterHandler(aChar))); + +Configuration config = builder.getConfiguration() + + + // 获取jdbc.properties文件中定义的项目的名字 -def projectName = props["project"] +def projectName = config.getString("project") + +// 检测命令行中是否指定了projectname参数 +if (project.hasProperty('projectname')) { + println "检测到项目名称命令行输入参数,projectname = " + project.projectname + projectName = project.projectname + config.setProperty("project", projectName) + + +} +else{ + println "没有命令行参数,采用jdbc.properties文件中的项目名称" +} + +// 检测命令行中是否指定了database参数,该参数包括了数据库连接的多个参数值,采用逗号分隔 +if (project.hasProperty('databaseParameters')) { + println "检测到项目名称命令行输入参数,databaseParameters = " + project.databaseParameters + def databaseParameters = project.databaseParameters.split(',') + + if (databaseParameters.length != 3){ + // 抛出异常,终止编译 + throw new GradleException("数据库参数错误,参数个数应该为3个,并且用逗号分隔") + } + else{ + config.setProperty("database", databaseParameters[0]) + if (databaseParameters[0] == "sqlserver"){ + config.setProperty("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect") + config.setProperty("jdbc.driverClassName", "com.microsoft.sqlserver.jdbc.SQLServerDriver") + config.setProperty("jdbc.url", "jdbc:sqlserver://localhost:1433;databaseName=unittest") + } + else if (databaseParameters[0] == "oracle"){ + config.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle10gDialect") + config.setProperty("jdbc.driverClassName", "oracle.jdbc.OracleDriver") + config.setProperty("jdbc.url", "jdbc:oracle:thin:@//localhost:1521/ORCL") + } + + config.setProperty("jdbc.username", databaseParameters[1]) + + String encoded = databaseParameters[2].bytes.encodeBase64().toString() + config.setProperty("jdbc.password", encoded) + + println "database = " + databaseParameters[0] + println "jdbc.username = " + databaseParameters[1] + println "jdbc.password = " + encoded + } + +} + +// 保存properties文件 +builder.save() + +// 重新加载文件 +//config = builder.getConfiguration() + println "编译时间:" + getDate() println "发布项目名称:" + projectName +//throw new GradleException("Test") + subprojects { apply plugin: 'java' apply plugin: 'eclipse'