import com.google.common.io.Files apply plugin: 'java-gradle-plugin' mkdir 'templates' sourceSets.main.resources.srcDir 'templates' gradlePlugin { plugins { plugin { id = 'io.sc.platform.gradle' implementationClass = 'io.sc.platform.gradle.plugins.PlatformPlugin' } } } dependencies { implementation( "org.springframework:spring-web", "org.springframework:spring-core", "com.fasterxml.jackson.core:jackson-core", "com.fasterxml.jackson.core:jackson-annotations", "com.fasterxml.jackson.core:jackson-databind", "com.google.guava:guava:${guava_version}", "net.lingala.zip4j:zip4j:${zip4j_version}" ) } jar { manifest { attributes 'Main-Class': 'io.sc.platform.gradle.Application', 'Implementation-Version': archiveVersion, 'Implementation-Title': project.name } } /** * ----------------------------------------------------- * 将根目录中的文件复制到 templates/pgp/setup 目录 * ----------------------------------------------------- */ def setupDir ="templates/pgp/setup"; task copySetup {} tasks.copySetup.doFirst { println "copy ../ --> ${setupDir}" delete setupDir mkdir setupDir } tasks.copySetup.doLast { copy { from "../" into setupDir include ".gitignore" include "build.gradle" include "build-version.gradle" include "gradle.properties" include "gradlew" include "gradlew.bat" include "gradle/**/*" rename { name -> return name=='build.gradle'?'build.gradle.txt':name; //为了避免 ide 错误 } } // 由于 gradle copy 插件无法复制 . 开头的文件,需单独处理 Files.copy(file('../.gitignore'),file("${setupDir}/gitignore")); // 生成 CHANGELOG 文件 file("${setupDir}/CHANGELOG").write(''); // 生成 README.adoc 文件 file("${setupDir}/README.adoc").write(''); // 生成 setting.gradle 文件 file("${setupDir}/settings.gradle").write(''); } /** * ----------------------------------------------------- * 将 app.platform 目录中的文件复制到 templates/pgp/app 目录 * ----------------------------------------------------- */ def appDir ="templates/pgp/app"; task copyApp {} tasks.copyApp.doFirst { println "copy ../app.platform --> ${appDir}" delete appDir mkdir appDir } tasks.copyApp.doLast { copy { from "../app.platform" into appDir include "src/**/*" include "build.gradle" include "build-common.gradle" include "build-jetty.gradle" include "build-tomcat.gradle" include "build-undertow.gradle" include "gradle.properties" exclude "**/rebel.xml" rename { name -> return name=='Application.java'?'Application.java.txt':name; //为了避免 ide 错误 } } // 生成 README.adoc 文件 file("${appDir}/README.adoc").write(''); } /** * ----------------------------------------------------- * 生成插件模版 * ----------------------------------------------------- */ task syncPluginTemplates {} tasks.syncPluginTemplates.doLast { } syncPluginTemplates.dependsOn(copySetup,copyApp); processResources.dependsOn(syncPluginTemplates); /* task zipFrontendResources() {} tasks.zipFrontendResources.doFirst { File srcDir = file('../../framework-base/org.wsp.framework.core.frontend'); File targetFile =file('./src/main/resources/framework-template/front-end/template.zip'); delete targetFile println "开始执行压缩 ${srcDir.getAbsolutePath()} -> ${targetFile.getAbsolutePath()}" net.lingala.zip4j.ZipFile zipFile =new net.lingala.zip4j.ZipFile(targetFile); srcDir.eachFile { if(it.isDirectory()){ if(!".DS_Store".equals(it.name) && !"node_modules".equals(it.name) && !"dist".equals(it.name) && !"build".equals(it.name) && !"java-src".equals(it.name) ){ zipFile.addFolder(it); } }else{ if(!"org.wsp.framework.core.frontend.iml".equals(it.name) && !"package-lock.json".equals(it.name) ){ zipFile.addFile(it); } } } } processResources.dependsOn(zipFrontendResources) */