You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
165 lines
5.7 KiB
165 lines
5.7 KiB
import org.gradle.plugins.ide.idea.model.IdeaLanguageLevel |
|
|
|
plugins { |
|
id 'java' |
|
id 'java-library' |
|
} |
|
|
|
def loadLocalProp() { |
|
Properties prop = new Properties(); |
|
File propFile = new File(projectDir.getAbsolutePath(), "local.properties") |
|
if (propFile.exists()) { |
|
prop.load(propFile.newDataInputStream()) |
|
} |
|
return prop |
|
} |
|
|
|
def getRootGradle() { |
|
def currentGradle = gradle |
|
while (currentGradle.parent) { |
|
currentGradle = currentGradle.parent |
|
} |
|
return currentGradle |
|
} |
|
|
|
def findOutputPath(Properties p) { |
|
def localEnv = p.getProperty("local.env") |
|
if (localEnv != null && localEnv.length() > 0) { |
|
return localEnv |
|
} |
|
def rootGradle = getRootGradle() |
|
def hookProject = rootGradle.getIncludedBuilds() |
|
.find({ build -> build.name == 'hook' }) |
|
if (hookProject) { |
|
def path = hookProject.projectDir.parentFile.parent + '/env/webroot/WEB-INF' |
|
return path |
|
} |
|
return projectDir.getAbsolutePath() + "/env/webroot/WEB-INF" |
|
} |
|
|
|
def getFRVersion(String name) { |
|
def v = localProp.getProperty("local.dev." + name) |
|
if ("true".equalsIgnoreCase(v)) { |
|
return "DEV" + frVersion |
|
} |
|
return frVersion |
|
} |
|
|
|
/* |
|
工程自定义配置说明 |
|
--------------- |
|
1. 工程env默认情况为build.gradle所在目录下的env/webroot/WEB-INF, |
|
如果本工程是导入FR主代码工程中,env路径是主代码工程finereport-maven所在目录下的env/webroot/WEB-INF |
|
2. 如果需要自定义env路径,则在build.gradle所在目录下创建一个local.properties文件(该文件不会进入git仓库) |
|
在里面添加: |
|
local.env=你的WEB-INF目录 |
|
3. 主jar依赖默认只依赖jar包,对于有代码的模块,也可以在local.properties文件中增加对应的配置来让其依赖代码 |
|
例如存在core和report-engine的代码,只需在local.properties中新增: |
|
local.dev.core=true |
|
local.dev.report-engine=true |
|
最终的依赖就是: |
|
com.fr.core:fine-core:DEV10.0-RELEASE-SNAPSHOT |
|
com.fr.report:fine-report-engine:DEV10.0-RELEASE-SNAPSHOT |
|
可以依赖代码的模块有以下几个: |
|
local.dev.third=true |
|
local.dev.core=true |
|
local.dev.activator=true |
|
local.dev.datasource=true |
|
local.dev.webui=true |
|
local.dev.decision=true |
|
local.dev.decision-report=true |
|
local.dev.schedule=true |
|
local.dev.schedule-report=true |
|
local.dev.report-engine=true |
|
local.dev.report-designer=true |
|
4. 完整local.properties内容示例,假设输出目录自定义为/Users/rinoux/envs/dev/webroot/WEB-INF, |
|
依赖代码的模块为core,activator,datasource,decision,decision-report,report-engine,report-designer, |
|
文件内容如下: |
|
local.env=/Users/rinoux/envs/dev/webroot/WEB-INF |
|
local.dev.core=true |
|
local.dev.activator=true |
|
local.dev.datasource=true |
|
local.dev.decision=true |
|
local.dev.decision-report=true |
|
local.dev.report-engine=true |
|
local.dev.report-designer=true |
|
*/ |
|
|
|
ext { |
|
localProp = loadLocalProp() |
|
env = findOutputPath(localProp) |
|
frVersion = "10.0-RELEASE-SNAPSHOT" |
|
|
|
def xmlParser = new XmlParser(); |
|
def plugin = xmlParser.parse("${project.projectDir}/plugin.xml") |
|
finePluginId = plugin.id[0].find() |
|
finePluginVersion = plugin.version[0].find() |
|
|
|
//插件编译目录 |
|
outputPath = "${env}/plugins/plugin-${finePluginId}-${finePluginVersion}" |
|
ignoreTestFailureSetting = true |
|
languageLevelSetting = 1.8 |
|
} |
|
|
|
dependencies { |
|
} |
|
|
|
allprojects { |
|
apply plugin: 'java' |
|
apply plugin: 'java-library' |
|
apply plugin: 'maven-publish' |
|
apply plugin: 'java-gradle-plugin' |
|
apply plugin: 'idea' |
|
|
|
group 'com.fr.plugin' |
|
version frVersion |
|
sourceCompatibility = languageLevelSetting |
|
targetCompatibility = languageLevelSetting |
|
|
|
tasks.withType(JavaCompile) { |
|
options.encoding = "UTF-8" |
|
} |
|
|
|
repositories { |
|
mavenLocal() |
|
} |
|
|
|
idea { |
|
module { |
|
inheritOutputDirs = false |
|
outputDir = file(outputPath + "/classes") |
|
testOutputDir = file(outputPath + "/test-classes") |
|
languageLevel = new IdeaLanguageLevel(sourceCompatibility) |
|
targetBytecodeVersion = targetCompatibility |
|
} |
|
} |
|
|
|
|
|
task copyPluginXML(type: Copy) { |
|
//拷贝plugin.xml到插件安装目录 |
|
into outputPath |
|
from(projectDir.getAbsolutePath()) { |
|
include "plugin.xml" |
|
} |
|
} |
|
processResources.dependsOn copyPluginXML |
|
|
|
dependencies { |
|
implementation 'com.fr.third.server:servlet-api:3.0' |
|
implementation 'com.fr.third:fine-third:' + getFRVersion("third") |
|
implementation 'com.fr.core:fine-core:' + getFRVersion("core") |
|
implementation 'com.fr.activator:fine-activator:' + getFRVersion("activator") |
|
implementation 'com.fr.datasource:fine-datasource:' + getFRVersion("datasource") |
|
implementation 'com.fr.webui:fine-webui:' + getFRVersion("webui") |
|
implementation 'com.fr.decision:fine-decision:' + getFRVersion("decision") |
|
implementation 'com.fr.decision:fine-decision-report:' + getFRVersion("decision-report") |
|
implementation 'com.fr.schedule:fine-schedule:' + getFRVersion("schedule") |
|
implementation 'com.fr.schedule:fine-schedule-report:' + getFRVersion("schedule-report") |
|
implementation 'com.fr.report:fine-report-engine:' + getFRVersion("report-engine") |
|
implementation 'com.fr.report:fine-report-designer:' + getFRVersion("report-designer") |
|
testImplementation 'org.easymock:easymock:3.5.1' |
|
testImplementation 'org.powermock:powermock-module-junit4:1.7.1' |
|
testImplementation 'org.powermock:powermock-api-easymock:1.7.1' |
|
testImplementation 'junit:junit:4.12' |
|
} |
|
} |