Use different dir for external jars, improve doc - change "setupExternalJars" to write the jars to "<edgent>/externalJars" and change .classpath files accordinly. Don't want to cause Eclipse build failures / have to rerun setupExternalJars every time a gradle clean is performed. - tweak the Eclipse related doc
Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent/commit/a1dafeab Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent/tree/a1dafeab Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent/diff/a1dafeab Branch: refs/heads/master Commit: a1dafeab9656425350f712a519d1e5b8b1a41225 Parents: c8cb148 Author: Dale LaBossiere <dlab...@us.ibm.com> Authored: Thu Sep 29 18:05:33 2016 -0400 Committer: Dale LaBossiere <dlab...@us.ibm.com> Committed: Thu Sep 29 18:05:33 2016 -0400 ---------------------------------------------------------------------- .gitignore | 6 ++-- DEVELOPMENT.md | 40 ++++++++++++++------------ analytics/.classpath | 2 +- build.gradle | 29 ++++++++++++------- connectors/.classpath | 72 +++++++++++++++++++++++----------------------- console/.classpath | 18 ++++++------ ext/.classpath | 8 +++--- 7 files changed, 94 insertions(+), 81 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/.gitignore ---------------------------------------------------------------------- diff --git a/.gitignore b/.gitignore index 7520377..92778e2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,9 @@ /test/svt/lib /release-edgent /reports +/.gradle/ +build/ +/externalJars # Mobile Tools for Java (J2ME) .mtj.tmp/ @@ -16,9 +19,6 @@ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* -/.gradle/ -build/ - # IntelliJ Idea .idea/ *.iml http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/DEVELOPMENT.md ---------------------------------------------------------------------- diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index faff9ad..eb353c7 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -11,25 +11,25 @@ The Edgent community welcomes contributions, please *Get Involved*! ## Switching from Ant to Gradle We are getting close to being able to permanently switch over to a gradle based -build environment [EDGENT-139](https://issues.apache.org/jira/browse/EDGENT-139). +build tooling [EDGENT-139](https://issues.apache.org/jira/browse/EDGENT-139). -For a short time, both the gradle and ant build environments will be functional. -The gradle build environment and the ant environment create artifacts in +For a short time, both the gradle and ant build tooling environments will be functional. +The gradle build tooling and the ant tooling create artifacts in different places in the workspace so they do not interfere with each other. Once the 3rd party jars have been removed from the Edgent repository, the -ant based environment will no longer work. +ant based tooling will no longer work. -*See _Using Eclipse_ below for a gradle task that must be run to make the -3rd party jars available to an Eclipse Edgent runtime development environment.* +**See _Using Eclipse_ below for a gradle task that must be run to make the +3rd party jars available to an Eclipse Edgent runtime development environment.** Timeline: -- Sep 27 - Start using the gradle build environment for developing Edgent. +- Sep 27 - Start using the gradle build tooling for developing Edgent. See below for using gradle. -- Oct 01 - switch travis-ci builds to using the gradle environment -- ASAP - Eclipse based Edgent runtime development doesn't use 3rd party jars in the repo +- Sep 30 - Eclipse based Edgent runtime development doesn't use 3rd party jars in the repo +- Oct 01 - switch travis-ci builds to using the gradle tooling - Nov 01 - remove the 3rd party jars from the Edgent repository. - The ant build environment and "old" Eclipse build environment no + The ant build tooling and "old" Eclipse build environment no longer function. It's recommended that developers of Edgent create a new workspace instead of @@ -314,12 +314,12 @@ Notes with the above PR merge directions: ### Using Eclipse -The Edgent git repository contains Eclipse project definitions for the top-level directories that -contain code, such as api, runtime, connectors. +The Edgent git repository contains Eclipse project definitions for the +top-level directories that contain code, such as api, runtime, connectors. -*The repository does not include the 3rd party jars that Edgent depends on +**The git repository does not include the 3rd party jars that Edgent depends on and Eclipse builds of Edgent projects will fail until a gradle task is run -to make them available in your workspace. See the steps below.* +to make them available in your workspace. See the steps below.** Using the plugin Eclipse Git Team Provider allows you to import these projects into your Eclipse workspace directly from your fork. @@ -330,10 +330,10 @@ into your Eclipse workspace directly from your fork. 1. Under Location enter the URI of your fork (the other fields will be filled in automatically) and click Next 1. If required, enter your passphrase to unlock you ssh key 1. Select the branch, usually master and click Next -1. Set the directory where your local clone will be stored and click Next (the directory edgent under this directory is where you can build and run tests using the Ant targets) +1. Set the directory where your local clone will be stored and click Next (the directory `edgent` under this directory is where you can build and run tests using the Gradle targets) 1. Select Import existing Eclipse projects and click Next -1. In the Import Projects window, make sure that the Search for nested projects checkbox is selected. Click Finish to bring in all Edgent projects. *Expect build failures until you...* -1. Run a gradle task to make all of the dependant 3rd party jars available to Eclipse. +1. In the Import Projects window, make sure that the Search for nested projects checkbox is selected. Click Finish to bring in all Edgent projects. **Expect build failures until you...** +1. Run a gradle task to make all of the dependant 3rd party jars available to Eclipse. When the command finishes, refresh your Eclipse workspace so that it rebuilds the projects. ``` sh $ ./gradlew setupExternalJars ``` @@ -343,5 +343,9 @@ The project `_edgent` exists to make the top level artifacts such as other projects (e.g., `api`) also show up in the `_edgent` folder and are best ignored. -Note. Specifics may change depending on your version of Eclipse or the Eclipse Git Team Provider. +Builds and junit testing of Edgent in Eclipse is independent from the artifacts +generated by the gradle/ant build tooling. Neither environment is affected by +the other. This is not ideal but it's where things are at at this time. +Both sets of tooling can be and, typically are, used in the same workspace. +Note. Specifics may change depending on your version of Eclipse or the Eclipse Git Team Provider. http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/analytics/.classpath ---------------------------------------------------------------------- diff --git a/analytics/.classpath b/analytics/.classpath index e013749..36e1d49 100644 --- a/analytics/.classpath +++ b/analytics/.classpath @@ -4,7 +4,7 @@ <classpathentry kind="src" path="math3/src/test/java"/> <classpathentry kind="src" path="sensors/src/main/java"/> <classpathentry kind="src" path="sensors/src/test/java"/> - <classpathentry exported="true" kind="lib" path="../build/distributions/java8/analytics/math3/ext/commons-math3-3.4.1.jar"/> + <classpathentry exported="true" kind="lib" path="../externalJars/analytics/math3/ext/commons-math3-3.4.1.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry combineaccessrules="false" kind="src" path="/api"/> http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/build.gradle ---------------------------------------------------------------------- diff --git a/build.gradle b/build.gradle index 60ee8f6..20e9bb3 100644 --- a/build.gradle +++ b/build.gradle @@ -45,6 +45,8 @@ ext { DSTAMP = String.format('%tY%<tm%<td', now) TSTAMP = String.format('%tH%<tM', now) + external_jars_dir = "$rootProject.projectDir/externalJars" // unaffected by clean + target_dir = "$distsDir" target_java8_dir = "$target_dir/java8" target_java8_ext_dir = "$target_java8_dir/ext" @@ -98,10 +100,17 @@ ext { dependencies { compile common_ext_dependencies } -task copyCommonExtJars(type: Copy) { - description = "Copy common external jars to target_java8_ext_dir" - from configurations.compile.files - into target_java8_ext_dir +ext.copyCommonExtJarsFn = { targetDir -> + copy { + from configurations.compile.files + into targetDir + } +} +task setupCommonExtJars << { + copyCommonExtJarsFn "$external_jars_dir/ext" +} +task copyCommonExtJars << { + copyCommonExtJarsFn target_java8_ext_dir } def String mkJarNameFromSpec(String jarSpec) { @@ -355,7 +364,7 @@ subprojects { } } - ext.copyProjectExtJarsFn = { + ext.copyProjectExtJarsFn = { targetDir -> // Copy the project jar's "private" external dependencies (transitively) // into the project's ext dir in the target-dir. @@ -374,13 +383,13 @@ subprojects { copy { from nonCommonExtFiles includeEmptyDirs = false - into "$target_java8_dir/$projectExtDir" + into "$targetDir/$projectExtDir" } } - task copyProjectExtJars << { + task setupProjectExtJars << { // Helper for setupExternalJars task - copyProjectExtJarsFn() + copyProjectExtJarsFn external_jars_dir } jar { @@ -401,7 +410,7 @@ subprojects { } doLast { - copyProjectExtJarsFn() + copyProjectExtJarsFn target_java8_dir } } @@ -690,7 +699,7 @@ build { task setupExternalJars { description = 'Add all of the dependant external jars to the target-dir (make available to Eclipse, etc)' - dependsOn copyCommonExtJars, filteredSubprojects.copyProjectExtJars + dependsOn setupCommonExtJars, filteredSubprojects.setupProjectExtJars } task wrapper(type: Wrapper) { http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/connectors/.classpath ---------------------------------------------------------------------- diff --git a/connectors/.classpath b/connectors/.classpath index cae5a4e..a845278 100644 --- a/connectors/.classpath +++ b/connectors/.classpath @@ -28,42 +28,42 @@ <classpathentry kind="src" path="wsclient-javax.websocket/src/main/java"/> <classpathentry kind="src" path="wsclient-javax.websocket/src/test/java"/> <classpathentry kind="src" path="javax.websocket-client/src/main/resources"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/http/ext/commons-codec-1.9.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/http/ext/commons-logging-1.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/http/ext/httpclient-4.5.1.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/http/ext/httpcore-4.4.4.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/watson-iot-0.1.5.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/commons-lang3-3.4.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/commons-codec-1.10.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/commons-logging-1.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/commons-net-3.3.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/httpclient-4.5.1.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/httpcore-4.4.3.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/joda-time-2.9.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/iotp/ext/org.eclipse.paho.client.mqttv3-1.1.0.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/kafka_2.10-0.8.2.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/kafka-clients-0.8.2.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/log4j-1.2.16.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/metrics-core-2.2.0.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/scala-library-2.10.4.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/zkclient-0.3.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/kafka/ext/zookeeper-3.4.6.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/mqtt/ext/org.eclipse.paho.client.mqttv3-1.0.2.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/javax-websocket-client-impl-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/javax.websocket-api-1.0.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/jetty-util-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/websocket-api-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/websocket-client-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-client/ext/websocket-common-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/javax-websocket-server-impl-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/jetty-http-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/jetty-io-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/jetty-security-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/jetty-server-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/jetty-servlet-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/javax.servlet-api-3.1.0.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/websocket-server-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/connectors/javax.websocket-server/ext/websocket-servlet-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/http/ext/commons-codec-1.9.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/http/ext/commons-logging-1.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/http/ext/httpclient-4.5.1.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/http/ext/httpcore-4.4.4.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/watson-iot-0.1.5.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/commons-lang3-3.4.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/commons-codec-1.10.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/commons-logging-1.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/commons-net-3.3.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/httpclient-4.5.1.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/httpcore-4.4.3.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/joda-time-2.9.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/iotp/ext/org.eclipse.paho.client.mqttv3-1.1.0.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/kafka_2.10-0.8.2.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/kafka-clients-0.8.2.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/log4j-1.2.16.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/metrics-core-2.2.0.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/scala-library-2.10.4.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/zkclient-0.3.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/kafka/ext/zookeeper-3.4.6.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/mqtt/ext/org.eclipse.paho.client.mqttv3-1.0.2.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/javax-websocket-client-impl-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/javax.websocket-api-1.0.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/jetty-util-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/websocket-api-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/websocket-client-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-client/ext/websocket-common-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/javax-websocket-server-impl-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/jetty-http-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/jetty-io-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/jetty-security-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/jetty-server-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/jetty-servlet-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/javax.servlet-api-3.1.0.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/websocket-server-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/connectors/javax.websocket-server/ext/websocket-servlet-9.3.6.v20151106.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry combineaccessrules="false" kind="src" path="/api"/> http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/console/.classpath ---------------------------------------------------------------------- diff --git a/console/.classpath b/console/.classpath index 07eb4d8..f9a77ba 100644 --- a/console/.classpath +++ b/console/.classpath @@ -3,15 +3,15 @@ <classpathentry kind="src" path="server/src/main/java"/> <classpathentry kind="src" path="server/src/test/java"/> <classpathentry kind="src" path="servlets/src/main/java"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-http-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-io-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-security-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-server-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-servlet-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-util-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-webapp-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/jetty-xml-9.3.6.v20151106.jar"/> - <classpathentry kind="lib" path="../build/distributions/java8/console/server/ext/javax.servlet-api-3.1.0.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-http-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-io-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-security-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-server-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-servlet-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-util-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-webapp-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/jetty-xml-9.3.6.v20151106.jar"/> + <classpathentry kind="lib" path="../externalJars/console/server/ext/javax.servlet-api-3.1.0.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> <classpathentry combineaccessrules="false" kind="src" path="/ext"/> http://git-wip-us.apache.org/repos/asf/incubator-edgent/blob/a1dafeab/ext/.classpath ---------------------------------------------------------------------- diff --git a/ext/.classpath b/ext/.classpath index 2541ec5..ca61f28 100644 --- a/ext/.classpath +++ b/ext/.classpath @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <classpath> - <classpathentry exported="true" kind="lib" path="../build/distributions/java8/ext/gson-2.2.4.jar"/> - <classpathentry exported="true" kind="lib" path="../build/distributions/java8/ext/metrics-core-3.1.2.jar"/> - <classpathentry exported="true" kind="lib" path="../build/distributions/java8/ext/slf4j-api-1.7.12.jar"/> - <classpathentry exported="true" kind="lib" path="../build/distributions/java8/ext/slf4j-jdk14-1.7.12.jar"/> + <classpathentry exported="true" kind="lib" path="../externalJars/ext/gson-2.2.4.jar"/> + <classpathentry exported="true" kind="lib" path="../externalJars/ext/metrics-core-3.1.2.jar"/> + <classpathentry exported="true" kind="lib" path="../externalJars/ext/slf4j-api-1.7.12.jar"/> + <classpathentry exported="true" kind="lib" path="../externalJars/ext/slf4j-jdk14-1.7.12.jar"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="output" path="bin"/> </classpath>