bug 506579: Introduces Gradle build for api, core, test projects
diff --git a/.gitignore b/.gitignore
index 0206a6a..04a4208 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,4 +12,6 @@
.project
.springBeans
.settings
+bin
+build
diff --git a/build.gradle b/build.gradle
index 0c926b5..9452db7 100644
--- a/build.gradle
+++ b/build.gradle
@@ -12,12 +12,19 @@
def timestamp = new Date().format('yyyyMMddHHmmss', TimeZone.getTimeZone('GMT'))
-defaultTasks 'clean', 'build', 'javadoc', 'sourcesJar', 'javadocJar'
+defaultTasks 'clean', 'build', 'snapsDist'
-ext.javaProjects = [
- project(':org.eclipse.virgo.snaps'),
+ext.planProjects = [
+ project(':org.eclipse.virgo.snaps')
+]
+
+ext.bundleProjects = [
project(':org.eclipse.virgo.snaps.api'),
- project(':org.eclipse.virgo.snaps.cor:org.eclipse.virgo.snaps.core')
+ project(':org.eclipse.virgo.snaps.core')
+]
+
+ext.testProjects = [
+ project(':org.eclipse.virgo.snaps.test')
]
allprojects {
@@ -34,7 +41,7 @@
}
}
-configure(javaProjects) {
+configure(bundleProjects + testProjects + planProjects) {
apply plugin: 'java'
apply plugin: 'jacoco'
apply plugin: 'findbugs'
@@ -68,12 +75,30 @@
}
}
}
+ repositories {
+ mavenCentral()
+ ivy {
+ url "http://build.eclipse.org/rt/virgo/ivy/bundles/release/"
+ layout "pattern", { artifact "[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" }
+ }
+ maven{
+ url "http://build.eclipse.org/rt/virgo/gradle/bundles/"
+ }
+ }
configurations {
ecj {}
testBundles {
transitive = false
}
}
+ // this is necessary because Gemini Web contains a dependency with wrong groupId/version combination
+ configurations.all {
+ resolutionStrategy {
+ dependencySubstitution {
+ substitute module('javax.servlet:javax.servlet:3.0.0.v201103241009') with module('org.eclipse.virgo.mirrored:javax.servlet:3.0.0.v201103241009')
+ }
+ }
+ }
jar {
// add SUA to archive
from "$rootDir/build-bundlor/resources/about/notice.html"
@@ -121,7 +146,7 @@
}
}
-configure(javaProjects) {
+configure(bundleProjects) {
apply plugin: 'org.eclipse.virgo.bundlor'
task('addProjectVersionToGradlePropertiesTask', type: Copy) {
@@ -165,7 +190,7 @@
}
}
-configure(javaProjects) {
+configure(bundleProjects + testProjects + planProjects) {
apply plugin: 'eclipse'
eclipse {
@@ -187,9 +212,41 @@
}
}
+configure(bundleProjects) {
+ apply plugin: 'maven-publish'
+ publishing {
+ repositories {
+ maven {
+ name = "BuildEclipseOrg"
+ url "/opt/public/rt/virgo/gradle/bundles"
+ }
+ }
+ publications {
+ snaps(MavenPublication) {
+ groupId 'org.eclipse.virgo.snaps'
+ from components.java
+ }
+ }
+ }
+}
+
+task snapsDist(type: Zip) {
+ description 'Build Snaps distribution Zip file'
+ group = 'distribution'
+
+ archiveName "snaps-${version}.zip"
+ duplicatesStrategy 'exclude'
+ into("snaps-${version}/dist") {
+ from 'org.eclipse.virgo.snaps/src/main/resources/'
+ from bundleProjects.jar
+ }
+ into("snaps-${version}") {
+ from "build-snaps/resources"
+ }
+}
+
task wrapper(type: Wrapper) {
description 'Creates a local Gradle Wrapper'
group = 'Build Setup'
gradleVersion = '3.1'
}
-
diff --git a/gradle.properties b/gradle.properties
index b1762cf..1b94dac 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -7,7 +7,19 @@
# Versions of runtime dependencies
+# current 3.7.0.M04 Virgo build includes servlet spec 3.1, although Gemini Web 2.2.7 does not support it
+#javaxServletVersion = 3.1.0.v201410161800
+# therefore we are using the same servlet spec version as Gemini Web 2.2.7 until we can upgrade to Gemini Web 3.0.0
+javaxServletVersion = 3.0.0.v201103241009
+
+javaxServletJspVersion = 2.2.0.v201112011158
+eclipseOsgiVersion = 3.8.1.v20120830-144521
+eclipseGeminiWebVersion = 2.2.7.RELEASE
+eclipseVirgoVersion = 3.7.0.D-20161102123413
+slf4jVersion = 1.7.13
+apacheCatalina = 7.0.61
# Versions of test dependencies
-
-
+junitVersion = 4.7
+easymockVersion = 2.3
+springframeworkVersion = 4.2.4.RELEASE
diff --git a/org.eclipse.virgo.snaps.api/build.gradle b/org.eclipse.virgo.snaps.api/build.gradle
new file mode 100644
index 0000000..a723352
--- /dev/null
+++ b/org.eclipse.virgo.snaps.api/build.gradle
@@ -0,0 +1,15 @@
+description = 'Virgo Snaps API Bundle'
+
+dependencies {
+ ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+
+ compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "compile"
+ compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet.jsp", version: javaxServletJspVersion, configuration: "compile"
+ compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: eclipseOsgiVersion, configuration: "compile"
+ compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: eclipseGeminiWebVersion, configuration: "compile"
+
+ testCompile "junit:junit:${junitVersion}"
+ testCompile "org.easymock:easymock:${easymockVersion}"
+ testCompile "org.springframework:spring-core:${springframeworkVersion}"
+ testCompile "org.springframework:spring-test:${springframeworkVersion}"
+}
diff --git a/org.eclipse.virgo.snaps.api/src/test/resources/.gitignore b/org.eclipse.virgo.snaps.api/src/test/resources/.gitkeep
similarity index 100%
rename from org.eclipse.virgo.snaps.api/src/test/resources/.gitignore
rename to org.eclipse.virgo.snaps.api/src/test/resources/.gitkeep
diff --git a/org.eclipse.virgo.snaps.api/template.mf b/org.eclipse.virgo.snaps.api/template.mf
index 2f830c2..e4a0815 100644
--- a/org.eclipse.virgo.snaps.api/template.mf
+++ b/org.eclipse.virgo.snaps.api/template.mf
@@ -4,7 +4,7 @@
Bundle-Version: ${version}
Bundle-Name: Snaps API
Import-Template:
- org.eclipse.gemini.web.*;version="${org.eclipse.gemini.web:[=.=.=, +1)}",
- javax.servlet.jsp*;version="${javax.servlet.jsp:[=.=.=, +1)}",
- javax.servlet.*;version="${javax.servlet:[-1.6.=, +1)}",
+ org.eclipse.gemini.web.*;version="${eclipseGeminiWebVersion:[=.=.=, +1)}",
+ javax.servlet.jsp*;version="${javaxServletJspVersion:[=.=.=, +1)}",
+ javax.servlet.*;version="${javaxServletVersion:[-1.6.=, +1)}",
org.osgi.framework;version="0"
diff --git a/org.eclipse.virgo.snaps.core/build.gradle b/org.eclipse.virgo.snaps.core/build.gradle
new file mode 100644
index 0000000..0fc2e04
--- /dev/null
+++ b/org.eclipse.virgo.snaps.core/build.gradle
@@ -0,0 +1,30 @@
+description = 'Virgo Snaps Core Bundle'
+
+dependencies {
+ ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+
+ compile "org.slf4j:slf4j-api:${slf4jVersion}"
+
+ compile group: "org.eclipse.virgo.mirrored", name: "javax.servlet", version: javaxServletVersion, configuration: "compile"
+ compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: eclipseOsgiVersion, configuration: "compile"
+
+ compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.core", version: eclipseGeminiWebVersion, configuration: "compile"
+ compile group: "org.eclipse.gemini", name: "org.eclipse.gemini.web.tomcat", version: eclipseGeminiWebVersion, configuration: "compile"
+
+ compile "org.eclipse.virgo:org.eclipse.virgo.util.common:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.util.io:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.util.osgi:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.util.osgi.manifest:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.medic:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.nano.core:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.nano.deployer.api:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.kernel.artifact:${eclipseVirgoVersion}"
+ compile "org.eclipse.virgo:org.eclipse.virgo.kernel.deployer:${eclipseVirgoVersion}"
+
+ testCompile "org.eclipse.virgo:org.eclipse.virgo.test.stubs:${eclipseVirgoVersion}"
+ testCompile "org.eclipse.virgo:org.eclipse.virgo.medic.test:${eclipseVirgoVersion}"
+
+ testCompile "junit:junit:${junitVersion}"
+ testCompile "org.easymock:easymock:${easymockVersion}"
+ testCompile "org.springframework:spring-test:${springframeworkVersion}"
+}
diff --git a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
index 83d5544..fde835d 100644
--- a/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
+++ b/org.eclipse.virgo.snaps.core/src/main/java/org/eclipse/virgo/snaps/core/internal/webapp/container/SnapHttpSession.java
@@ -19,7 +19,7 @@
import org.eclipse.virgo.snaps.core.internal.webapp.SnapServletContext;
-
+@SuppressWarnings("deprecation")
public final class SnapHttpSession extends HttpSessionWrapper {
private static final String QUALIFIED_NAME_MARKER = "##";
@@ -55,11 +55,10 @@
super.setAttribute(qualifyName(name), value);
}
- @SuppressWarnings("deprecation")
- @Override
- public HttpSessionContext getSessionContext() {
- throw new RuntimeException(new OperationNotSupportedException("getSessionContext is deprecated"));
- }
+ @Override
+ public HttpSessionContext getSessionContext() {
+ throw new RuntimeException(new OperationNotSupportedException("getSessionContext is deprecated"));
+ }
private String qualifyName(String baseName) {
return QUALIFIED_NAME_MARKER + this.snapServletContext.getSnapContextPath() + "." + baseName;
diff --git a/org.eclipse.virgo.snaps.core/template.mf b/org.eclipse.virgo.snaps.core/template.mf
index 9047432..7ae4596 100644
--- a/org.eclipse.virgo.snaps.core/template.mf
+++ b/org.eclipse.virgo.snaps.core/template.mf
@@ -4,16 +4,16 @@
Bundle-Version: ${version}
Bundle-Name: Snaps Core
Import-Template:
- org.eclipse.virgo.kernel.*;version="${org.eclipse.virgo.kernel:[=.=.=, +1)}",
- org.eclipse.virgo.nano.*;version="${org.eclipse.virgo.nano:[=.=.=, +1)}",
- org.eclipse.virgo.util.*;version="${org.eclipse.virgo.util:[=.=.=, +1)}",
- org.eclipse.gemini.web.*;version="${org.eclipse.gemini.web:[=.=.=, +1)}",
- org.eclipse.virgo.medic.*;version="${org.eclipse.virgo.medic:[=.=.=, +1)}",
- javax.servlet.jsp*;version="${javax.servlet.jsp:[=.=.=, +1)}",
- javax.servlet.*;version="${javax.servlet:[-1.6.=, +1)}",
+ org.eclipse.virgo.kernel.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.nano.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.util.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.virgo.medic.*;version="${eclipseVirgoVersion:[=.=.=, +1)}",
+ org.eclipse.gemini.web.*;version="${eclipseGeminiWebVersion:[=.=.=, +1)}",
+ javax.servlet.jsp*;version="${javaxServletJspVersion:[=.=.=, +1)}",
+ javax.servlet.*;version="${javaxServletVersion:[-1.6.=, +1)}",
javax.naming.*;version="0",
- org.apache.catalina.*;version="${org.apache.catalina:[=.=.=,+1)}",
- org.slf4j.*;version="${org.slf4j.api:[=.=.=,=.+1.=)]}",
+ org.apache.catalina.*;version="${apacheCatalina:[=.=.=,+1)}",
+ org.slf4j.*;version="${slf4jVersion:[=.=.=,=.+1.=)]}",
javax.xml.parsers.*;version="0",
org.osgi.*;version="0",
org.w3c.dom.*;version="0",
diff --git a/org.eclipse.virgo.snaps.test/build.gradle b/org.eclipse.virgo.snaps.test/build.gradle
new file mode 100644
index 0000000..2963ce6
--- /dev/null
+++ b/org.eclipse.virgo.snaps.test/build.gradle
@@ -0,0 +1,14 @@
+description = 'Virgo Snaps Test Bundle'
+
+dependencies {
+ ecj group: "org.eclipse.jdt.core.compiler", name: "ecj", version: "${ecjVersion}"
+
+ testCompile project(":org.eclipse.virgo.snaps.api")
+ testCompile project(":org.eclipse.virgo.snaps.core")
+
+ testCompile "org.eclipse.virgo:org.eclipse.virgo.util.osgi.manifest:${eclipseVirgoVersion}"
+ testCompile "org.eclipse.virgo:org.eclipse.virgo.util.osgi:${eclipseVirgoVersion}"
+
+ testCompile "junit:junit:${junitVersion}"
+ testCompile "org.eclipse.virgo:org.eclipse.virgo.test.framework:${eclipseVirgoVersion}"
+}
diff --git a/org.eclipse.virgo.snaps.test/src/main/java/.gitignore b/org.eclipse.virgo.snaps.test/src/main/java/.gitkeep
similarity index 100%
rename from org.eclipse.virgo.snaps.test/src/main/java/.gitignore
rename to org.eclipse.virgo.snaps.test/src/main/java/.gitkeep
diff --git a/org.eclipse.virgo.snaps.test/src/main/java/.gitignore b/org.eclipse.virgo.snaps.test/src/main/java/org/eclipse/virgo/snaps/test/.gitkeep
similarity index 100%
copy from org.eclipse.virgo.snaps.test/src/main/java/.gitignore
copy to org.eclipse.virgo.snaps.test/src/main/java/org/eclipse/virgo/snaps/test/.gitkeep
diff --git a/org.eclipse.virgo.snaps/build.gradle b/org.eclipse.virgo.snaps/build.gradle
new file mode 100644
index 0000000..9ff3e21
--- /dev/null
+++ b/org.eclipse.virgo.snaps/build.gradle
@@ -0,0 +1 @@
+description = 'Virgo Snaps Plan deployment unit'
diff --git a/org.eclipse.virgo.snaps.api/src/test/resources/.gitignore b/org.eclipse.virgo.snaps/src/main/java/org/eclipse/virgo/snaps/.gitkeep
similarity index 100%
copy from org.eclipse.virgo.snaps.api/src/test/resources/.gitignore
copy to org.eclipse.virgo.snaps/src/main/java/org/eclipse/virgo/snaps/.gitkeep
diff --git a/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan b/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan
new file mode 100644
index 0000000..8f1bd76
--- /dev/null
+++ b/org.eclipse.virgo.snaps/src/main/resources/org.eclipse.virgo.snaps.plan
@@ -0,0 +1,9 @@
+<plan name="org.eclipse.virgo.snaps" version="3.7.0" scoped="false" atomic="true"
+ xmlns="http://www.eclipse.org/virgo/schema/plan"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.eclipse.org/virgo/schema/plan
+ http://www.eclipse.org/virgo/schema/plan/eclipse-virgo-plan.xsd">
+
+ <artifact type="bundle" name="org.eclipse.virgo.snaps.api" version="[3, 4)"/>
+ <artifact type="bundle" name="org.eclipse.virgo.snaps.core" version="[3, 4)"/>
+</plan>
diff --git a/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan b/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan
deleted file mode 100644
index 8b39d79..0000000
--- a/org.eclipse.virgo.snaps/src/org.eclipse.virgo.snaps.plan
+++ /dev/null
@@ -1,10 +0,0 @@
-<plan name="org.eclipse.virgo.snaps" version="3.0.0" scoped="false" atomic="true"
- xmlns="http://www.springsource.org/schema/dm-server/plan"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="
- http://www.springsource.org/schema/dm-server/plan
- http://www.springsource.org/schema/dm-server/plan/springsource-dm-server-plan.xsd">
-
- <artifact type="bundle" name="org.eclipse.virgo.snaps.api" version="[3, 4)"/>
- <artifact type="bundle" name="org.eclipse.virgo.snaps.core" version="[3, 4)"/>
-</plan>
diff --git a/settings.gradle b/settings.gradle
index ec44f68..e84344f 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -2,4 +2,4 @@
include ':org.eclipse.virgo.snaps'
include ':org.eclipse.virgo.snaps.api'
include ':org.eclipse.virgo.snaps.core'
-
+include ':org.eclipse.virgo.snaps.test'