apply plugin: 'java' [compileJava,compileTestJava]*.options*.encoding = 'UTF-8' ext { /** * 项目中依赖的jar的路径 * 1.如果依赖的jar需要打包到zip中,放置在lib根目录下 * 2.如果依赖的jar仅仅是编译时需要,防止在lib下子目录下即可 */ libPath = "$projectDir/../webroot/WEB-INF/lib" /** * 是否对插件的class进行加密保护,防止反编译 */ guard = true def pluginInfo = getPluginInfo() pluginPre = "fine-plugin" pluginName = pluginInfo.id pluginVersion = pluginInfo.version outputPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0/classes" outputXmlPath = "$projectDir/../webroot/WEB-INF/plugins/plugin-" + pluginName + "-1.0" } group = 'com.fr.plugin' version = '10.0' sourceCompatibility = '8' sourceSets { main { java.outputDir = file(outputPath) output.resourcesDir = file(outputPath) } } ant.importBuild("encrypt.xml") //定义ant变量 ant.projectDir = projectDir ant.references["compile.classpath"] = ant.path { fileset(dir: libPath, includes: '**/*.jar') fileset(dir: ".",includes:"**/*.jar" ) } classes.dependsOn('clean') task copyFiles(type: Copy,dependsOn: 'classes'){ from outputPath into "$projectDir/classes" } task copyXmlFiles(type: Copy){ from "$projectDir/plugin.xml" into file("$outputXmlPath") } task preJar(type:Copy,dependsOn: guard ? 'compile_encrypt_javas' : 'compile_plain_javas'){ from "$projectDir/classes" into "$projectDir/transform-classes" include "**/*.*" } jar.dependsOn("preJar") classes.dependsOn("copyXmlFiles") task makeJar(type: Jar,dependsOn: preJar){ from fileTree(dir: "$projectDir/transform-classes") baseName pluginPre appendix pluginName version pluginVersion destinationDir = file("$buildDir/libs") doLast(){ delete file("$projectDir/classes") delete file("$projectDir/transform-classes") } } task copyFile(type: Copy,dependsOn: ["makeJar"]){ from "$buildDir/libs" from("$projectDir/lib") { include "*.jar" } from "$projectDir/plugin.xml" into file("$buildDir/temp/plugin") } task zip(type:Zip,dependsOn:["copyFile"]){ from "$buildDir/temp/plugin" destinationDir file("$buildDir/install") baseName pluginPre appendix pluginName version pluginVersion } //控制build时包含哪些文件,排除哪些文件 processResources { // exclude everything // 用*.css没效果 // exclude '**/*.css' // except this file // include 'xx.xml' } /*读取plugin.xml中的version*/ def getPluginInfo(){ def xmlFile = file("plugin.xml") if (!xmlFile.exists()) { return ["id":"none", "version":"1.0.0"] } def plugin = new XmlParser().parse(xmlFile) def version = plugin.version[0].text() def id = plugin.id[0].text() return ["id":id,"version":version] } repositories { mavenLocal() maven { url = uri('http://mvn.finedevelop.com/repository/maven-public/') } } dependencies { //使用本地jar implementation fileTree(dir: 'lib', include: ['**/*.jar']) implementation fileTree(dir: libPath, include: ['**/*.jar']) }