Last active
May 7, 2017 23:27
-
-
Save alexeyr/7544845 to your computer and use it in GitHub Desktop.
Revisions
-
alexeyr revised this gist
Nov 19, 2013 . 7 changed files with 377 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,23 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'Interfaces and most basic classes required by nultiple modules.' dependencies { } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,75 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ project.ext["s4Version"] = '0.6.0-incubating' description = 'Apache S4 App' project.ext["archivesBaseName"] = "$project.name" project.ext["distRootFolder"] = "$archivesBaseName-${-> version}" // Append the suffix 'SNAPSHOT' when the build is not for release. //version = new Version(major: 0, minor: 0, bugfix: 0, isRelease: false) group = 'org.apache.s4' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' /* Set Java version. */ sourceCompatibility = 1.6 targetCompatibility = 1.6 repositories { mavenCentral() mavenLocal() mavenRepo name: "gson", url: "http://google-gson.googlecode.com/svn/mavenrepo" /* Add lib dir as a repo. Some jar files that are not available in a public repo are distributed in the lib dir. */ } dependencies { /* S4 Platform. We only need the API, not the transitive dependencies. */ compile project( ":s4-base" ) compile project( ":s4-core" ) compile project( ":s4-comm" ) compile (libraries.jcommander) compile (libraries.zkclient) compile (libraries.metrics) // if you need to use the twitter4j lib defined above, you must reference it here as a dependency // compile (libraries.twitter4j_core) } task cp << { description='Dumps the classpath for running a class from this project, into a \'classpath.txt\' file in the current directory' String rt = "" configurations.runtime.files.each{File file -> rt+=(file.path+File.pathSeparator) } new File("classpath.txt").write(sourceSets.main.output.classesDir.path + File.pathSeparator + rt) } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,45 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'Implementation-specific components of the communication layer.' dependencies { compile project(":s4-base") compile libraries.gson compile libraries.kryo compile libraries.netty compile (libraries.zkclient) } task testJar(type: Jar) { baseName = "test-${project.archivesBaseName}" from sourceSets.test.output } configurations { tests } artifacts { tests testJar } test { forkEvery=1 } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,54 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'The S4 core platform.' dependencies { compile project(":s4-base") compile project(":s4-comm") compile libraries.commons_codec compile libraries.jcommander compile libraries.asm compile libraries.netty compile libraries.zkclient compile libraries.reflectasm testCompile project(path: ':s4-comm', configuration: 'tests') testCompile libraries.gradle_base_services testCompile libraries.gradle_core testCompile libraries.gradle_tooling_api testCompile libraries.gradle_wrapper testCompile libraries.mockito_core } task testJar(type: Jar) { baseName = "test-${project.archivesBaseName}" from sourceSets.test.output } configurations { tests } artifacts { tests testJar } test { forkEvery=1; } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,71 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ def generatedSourceDir = "${buildDir}/generated-src/java" def diezelSrcDir = "${projectDir}/src/main/diezel"; dependencies { compile project(":s4-base") compile project(":s4-comm") compile project(":s4-core") testCompile project(path: ':s4-comm', configuration: 'tests') testRuntime libraries.zkclient testRuntime libraries.netty testRuntime libraries.asm } sourceSets { generated { java { srcDir generatedSourceDir } } } buildscript { repositories { mavenCentral() maven { url "http://oss.sonatype.org/content/repositories/snapshots" } maven { url "http://oss.sonatype.org/content/repositories/releases" } } dependencies { classpath libraries.diezel } } task generateSources << { outputs.dir generatedSourceDir def mojo = new net.ericaro.diezel.plugin.DiezelMojo() mojo.sourceDirectory = new File(diezelSrcDir); mojo.outputDirectory = new File(generatedSourceDir); mojo.staleMillis = 0; mojo.project = new org.apache.maven.project.MavenProject(); org.apache.maven.model.Build build = new org.apache.maven.model.Build(); build.setDirectory(mojo.sourceDirectory.getAbsolutePath()); mojo.project.setBuild(build); mojo.execute(); } compileJava.source generateSources.outputs.files, sourceSets.main.java eclipseClasspath.dependsOn generateSources This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,35 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'Examples of S4 applications.' dependencies { compile project( ":s4-base" ) compile project( ":s4-core" ) compile project( ":s4-comm" ) compile project( ":s4-edsl" ) compile libraries.junit compile libraries.jcip } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,74 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'The S4 tools platform.' apply plugin: 'java' task "create-dirs" << { sourceSets.all*.java.srcDirs*.each { it.mkdirs() } sourceSets.all*.resources.srcDirs*.each { it.mkdirs() } } dependencies { compile project(":s4-base") compile project(":s4-comm") compile project(":s4-core") compile libraries.jcommander compile libraries.zkclient compile libraries.gradle_base_services compile libraries.gradle_core compile libraries.gradle_tooling_api compile libraries.gradle_wrapper compile libraries.log4j testCompile project(path: ':s4-comm', configuration: 'tests') testCompile project(path: ':s4-core', configuration: 'tests') } apply plugin:'application' mainClassName = "org.apache.s4.tools.Tools" task copyTemplates << { copy { from 'src/main/java/hello' into 'src/main/resources' } } run { // run doesn't yet directly accept command line parameters... if ( project.hasProperty('args') ) { args project.args.split('\\s+') print args } } distZip { // what we build here is really a binary release of S4 with required subprojects and dependencies (hence refs to rootProject) classifier='bin' version = rootProject.version baseName=rootProject.ext.archivesBaseName } test { forkEvery=1 } -
alexeyr created this gist
Nov 19, 2013 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,357 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ description = 'Apache S4' defaultTasks 'assemble' project.ext["archivesBaseName"] = 'apache-s4' project.ext["distRootFolder"] = "$archivesBaseName-${-> version}" allprojects { // Append the suffix 'SNAPSHOT' when the build is not for release. version = new Version(major: 0, minor: 6, bugfix: 0, isRelease: true) group = 'org.apache.s4' /* Search these repos to find artifacts. Gradle will download and cache. */ repositories { mavenCentral() mavenLocal() maven { url 'http://google-gson.googlecode.com/svn/mavenrepo' } maven { url 'https://repo.springsource.org/libs-release' } maven { url 'http://repo.gradle.org/gradle/libs-releases-local' } /* Add lib dir as a repo. Some jar files that are not available in a public repo are distributed in the lib dir. */ flatDir name: 'libDir', dirs: "$rootDir/lib" } configurations.all { transitive = false } } /* All project libraries must be defined here. */ project.ext["libraries"] = [ guava: 'com.google.guava:guava:13.0.1', gson: 'com.google.code.gson:gson:1.6', guice: 'com.google.inject:guice:3.0', aop_alliance: 'aopalliance:aopalliance:1.0', guice_assist: 'com.google.inject.extensions:guice-assistedinject:3.0', kryo: 'com.esotericsoftware.kryo:kryo:2.20', minlog: 'com.googlecode:minlog:1.2', // NOTE shaded jar is not resolved correctly, we include it in /lib directory reflectasm: 'com.esotericsoftware.reflectasm:reflectasm:1.07:shaded', netty: 'io.netty:netty:3.5.11.Final', mockito_core: 'org.mockito:mockito-core:1.9.0', commons_config: 'commons-configuration:commons-configuration:1.6', commons_codec: 'commons-codec:commons-codec:1.4', commons_coll: 'net.sourceforge.collections:collections-generic:4.01', // Use this lib until the commons collection with Generics is released. commons_io: 'commons-io:commons-io:2.4', commons_lang: 'commons-lang:commons-lang:2.6', commons_logging: 'commons-logging:commons-logging:1.1.1', commons_collections:'commons-collections:commons-collections:3.2.1', objenesis: 'org.objenesis:objenesis:1.2', slf4j: 'org.slf4j:slf4j-api:1.6.1', log4j: 'log4j:log4j:1.2.15', logback_core: 'ch.qos.logback:logback-core:0.9.29', logback_classic: 'ch.qos.logback:logback-classic:0.9.29', zk: 'org.apache.zookeeper:zookeeper:3.3.3', jcip: 'net.jcip:jcip-annotations:1.0', junit: 'junit:junit:4.10', zkclient: 'com.github.sgroschupf:zkclient:0.1', diezel: 'net.ericaro:diezel-maven-plugin:1.0.0-beta-4', jcommander: 'com.beust:jcommander:1.25', asm: 'org.ow2.asm:asm:4.0', javax_inject: 'javax.inject:javax.inject:1', gradle_base_services: 'org.gradle:gradle-base-services:1.4', gradle_core: 'org.gradle:gradle-core:1.4', gradle_tooling_api: 'org.gradle:gradle-tooling-api:1.4', gradle_wrapper: 'org.gradle:gradle-wrapper:1.4', metrics: 'com.yammer.metrics:metrics-core:2.1.3' ] subprojects { apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'maven' apply plugin: 'maven-publish' // apply plugin: 'checkstyle' /* Set Java version. */ sourceCompatibility = 1.6 targetCompatibility = 1.6 project.ext["checkstyleConfigFileName"] = "$rootDir/config/checkstyle/s4-checkstyle.xml" configurations.all { exclude group: 'com.sun.jdmk', module: 'jmxtools' exclude group: 'com.sun.jmx', module: 'jmxri' exclude group: 'javax.jms', module: 'jms' exclude group: 'javax.mail', module: 'mail' } dependencies { /* Google. */ compile ( libraries.guava ) compile ( libraries.guice ) compile ( libraries.guice_assist) /* Logging. */ compile( libraries.slf4j ) compile( libraries.logback_core ) compile( libraries.logback_classic ) runtime( libraries.commons_logging) /* Commons. */ compile( libraries.commons_config ) compile( libraries.commons_coll ) compile( libraries.commons_io ) compile ( libraries.commons_lang ) runtime(libraries.commons_collections) /* Misc. */ compile( libraries.jcip ) compile( libraries.zk ) compile( libraries.metrics ) /* Testing. */ testCompile( libraries.junit ) // transitive runtime( libraries.log4j) // required by Zookeeper runtime(libraries.aop_alliance) runtime(libraries.minlog) runtime(libraries.gson) compile(libraries.reflectasm) runtime(libraries.objenesis) runtime(libraries.kryo) runtime(libraries.netty) runtime(libraries.asm) compile(libraries.javax_inject) runtime(libraries.commons_codec) } jar { from (rootDir) { include "NOTICE" include "LICENSE" into "META-INF" } } manifest.mainAttributes( provider: 'gradle', 'Implementation-Url': 'http://incubator.apache.org/s4/', 'Implementation-Version': version, 'Implementation-Vendor': 'Apache Software Foundation', 'Implementation-Vendor-Id': 'org.apache', 'Implementation-Title': 'org.apache.s4.'+project.name.substring(3) // s4-comm becomes org.apache.s4.comm for instance ) configurations { deployerJars } dependencies { deployerJars "org.apache.maven.wagon:wagon-http:2.2" } uploadArchives { configuration = configurations.deployerJars repositories { mavenDeployer { repository(url: "http://127.0.0.1:9081/nexus/content/repositories/releases/") { authentication(userName: "admin", password: "admin123") } } } // repositories { // maven { // credentials { // username "admin" // password "admin123" // } // url "http://127.0.0.1:9081/nexus/content/repositories/releases/" // } // } } } evaluationDependsOnChildren() project.ext["platformProjects"] = [project(':s4-base'), project(':s4-core'), project(':s4-comm'), project(':s4-tools'), project(':s4-benchmarks')] configurations { platformLibs } dependencies { platformLibs platformProjects } task javadoc (type: Javadoc) { destinationDir = new File(project.rootDir, 'doc/javadoc') destinationDir.deleteDir() excludes = ['org.apache.s4.benchmark'] project.ext["documentedProjects"] = new HashSet(platformProjects) documentedProjects.remove(project(':s4-benchmarks')) title = "Apache S4 " + version source documentedProjects.collect { project -> project.sourceSets.main.allJava } // Might need a classpath classpath = files(documentedProjects.collect { project -> project.sourceSets.main.compileClasspath }) } // TODO parameterize task javadocBinRelease (type: Javadoc) { destinationDir = new File(project.rootDir,'subprojects/s4-tools/src/dist/doc/javadoc') destinationDir.deleteDir() title = "Apache S4 " + version source platformProjects.collect { project -> project.sourceSets.main.allJava } // Might need a classpath classpath = files(subprojects.collect { project -> project.sourceSets.main.compileClasspath }) } task copyRequiredFilesForBinaryRelease (type: Copy) { copy { from (rootDir) { include "README.md" include "DISCLAIMER" include "gradlew" include "s4" } into new File(project.rootDir.path+'/subprojects/s4-tools/src/dist/') } copy { // binary release specifics from (rootDir.path + "/config/binrelease/") into new File(project.rootDir.path+'/subprojects/s4-tools/src/dist/') include "*" } File s4DistFile = new File(project.rootDir.path+'/subprojects/s4-tools/src/dist/s4') ant.replace(file: s4DistFile, token: "\n# NOTE: \"./gradlew s4-tools:installApp\" will prepare/update the tools subproject and related startup scripts", value: "") ant.replace(file: s4DistFile, token: "subprojects/s4-tools/build/install/s4-tools/", value: "") ant.chmod(file: s4DistFile, perm: "700") copy { from new File(rootDir, 'gradle') into new File(project.rootDir.path+'/subprojects/s4-tools/src/dist/gradle') } copy { from (new File(rootDir, 'lib')) { include '*.properties' } into new File(project.rootDir.path+'/subprojects/s4-tools/src/dist/lib') } } task binDist(dependsOn: ["s4-tools:clean", "javadocBinRelease", "copyRequiredFilesForBinaryRelease", "s4-tools:cleanDistZip", "s4-tools:distZip"]) { doFirst { new File(project.rootDir.path+'/subprojects/s4-tools/src/dist').deleteDir() } doLast { copy { from (project.rootDir.path+"/subprojects/s4-tools/build/distributions/") into (project.buildDir) exclude('tmp') } } } task srcDist(type: Zip) { doFirst { platformProjects.collect { project -> project.tasks.clean.execute() } new File(project.rootDir.path+'/subprojects/s4-tools/src/dist').deleteDir() } classifier='src' version = project.version baseName=project.ext.archivesBaseName destinationDir = project.buildDir from (project.rootDir) exclude ('**/.project') exclude ('**/.classpath') exclude ('.rat-excludes') exclude ('**/.gradle/**') exclude ('**/.settings/**') exclude ('**/build/**') exclude ('**/tmp/**') exclude ('**/bin/**') exclude ('website/**') exclude ('lib') exclude ('gradlew') exclude ('RELEASE_NOTES.html') exclude ('config') exclude ('subprojects/s4-benchmarks/config/injector.config') exclude ('subprojects/s4-benchmarks/config/node.config') into (baseName+'-'+version+'-'+classifier) } task rat(type: JavaExec) { print("Runs Apache RAT. Exclusions are defined in .rat-excludes file") main = 'org.apache.rat.Report' classpath = files ('lib/apache-rat-0.8.jar') args = ['-E', '.rat-excludes', '--dir', '.'] } task clean << { delete buildDir } /* Generates the gradlew scripts. http://www.gradle.org/docs/1.0/userguide/gradle_wrapper.html */ task wrapper(type: Wrapper) { gradleVersion = '1.4' jarFile='lib/gradle-wrapper-1.4.jar' } class Version { int major int minor int bugfix boolean isRelease String toString() { "$major.$minor.$bugfix${isRelease ? '' : '-SNAPSHOT'}-incubating" } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,42 @@ /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ include 's4-base' include 's4-core' include 's4-comm' //include 's4-edsl' //include 's4-example' include 's4-tools' include 's4-benchmarks' //include 's4-example' //include ':test-apps:simple-adapter-1' include ':test-apps:simple-deployable-app-1' include ':test-apps:producer-app' include ':test-apps:consumer-app' rootProject.name = 's4' rootProject.children.each {project -> if (project.name != 'test-apps') { String fileBaseName = project.name.replaceAll("\\p{Upper}") { "-${it.toLowerCase()}" } String projectDirName = "subprojects/$fileBaseName" project.projectDir = new File(settingsDir, projectDirName) project.buildFileName = "${fileBaseName}.gradle" assert project.projectDir.isDirectory() assert project.buildFile.isFile() } }