From 8207f12ec544203a86b91b1b80ae479e56971c92 Mon Sep 17 00:00:00 2001
From: guille <guillermopolito@gmail.com>
Date: Thu, 29 Sep 2016 14:11:56 +0200
Subject: [PATCH] making n2s3 a multi project sbt project

---
 n2s3/.gitignore => .gitignore                 |  0
 n2s3/LICENSE => LICENSE                       |  0
 n2s3/README.md => README.md                   |  0
 build.sbt                                     | 17 +++++++++++++
 n2s3/build.sbt                                | 24 -------------------
 .../n2s3/features/io/TestAERInputStream.scala |  2 +-
 .../features/io/TestMnistInputStream.scala    |  4 ++--
 .../support/io/TestFlatMapInputStream.scala   |  4 ++--
 .../support/io/TestGroupByInputStream.scala   |  4 ++--
 .../support/io/TestOptionInputStream.scala    |  4 ++--
 .../support/io/TestPositionInputStream.scala  |  4 ++--
 .../support/io/TestRepeatInputStream.scala    |  4 ++--
 .../n2s3/support/io/TestTakeInputStream.scala |  4 ++--
 n2s3_examples/build.sbt                       | 18 +-------------
 project/assembly.sbt                          |  1 +
 project/plugins.sbt                           |  3 +++
 16 files changed, 37 insertions(+), 56 deletions(-)
 rename n2s3/.gitignore => .gitignore (100%)
 rename n2s3/LICENSE => LICENSE (100%)
 rename n2s3/README.md => README.md (100%)
 create mode 100644 build.sbt
 create mode 100644 project/assembly.sbt
 create mode 100644 project/plugins.sbt

diff --git a/n2s3/.gitignore b/.gitignore
similarity index 100%
rename from n2s3/.gitignore
rename to .gitignore
diff --git a/n2s3/LICENSE b/LICENSE
similarity index 100%
rename from n2s3/LICENSE
rename to LICENSE
diff --git a/n2s3/README.md b/README.md
similarity index 100%
rename from n2s3/README.md
rename to README.md
diff --git a/build.sbt b/build.sbt
new file mode 100644
index 00000000..b41e54fb
--- /dev/null
+++ b/build.sbt
@@ -0,0 +1,17 @@
+lazy val commonSettings = Seq(
+  version          := "0.3-SNAPSHOT",
+  organization     := "fr.univ-lille.cristal",
+  scalaVersion     := "2.11.6",
+  scalacOptions    := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),
+  test in assembly := {},
+  
+  // Special repository resolver. Used to download project dependencies
+  resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots"
+)
+
+lazy val n2s3 = (project in file("n2s3")).
+  settings(commonSettings: _*)
+
+lazy val examples = (project in file("n2s3_examples")).
+  settings(commonSettings: _*).
+  dependsOn(n2s3)
\ No newline at end of file
diff --git a/n2s3/build.sbt b/n2s3/build.sbt
index f5121d01..9140d755 100644
--- a/n2s3/build.sbt
+++ b/n2s3/build.sbt
@@ -7,13 +7,6 @@
 
 lazy val n2s3 = (project in file(".")).settings(
   name             := "N2S3",
-  version          := "0.3-SNAPSHOT",
-  organization     := "fr.univ-lille.cristal",
-  scalaVersion     := "2.11.6",
-  scalacOptions    := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),
-
-  // Special repository resolver. Used to download project dependencies
-  resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
 
   /*********************************************************************************************************************
     * Dependencies
@@ -35,23 +28,6 @@ lazy val n2s3 = (project in file(".")).settings(
     )
   },
 
-  //Old dependencies:
-  //"jfree" % "jfreechart" % "1.0.13",
-
-  //To see which and how managed dependencies are loaded
-  //unmanagedBase := baseDirectory.value / "lib_managed",
-
-  assemblyExcludedJars in assembly := {
-    val cp = (fullClasspath in assembly).value
-    cp.filter( x => x.data.getName == "jcommon-1.0.9.jar" || x.data.getName == "jfreechart-1.0.13.jar")
-  },
-
-  //Avoiding tests in generated assembly
-  test in assembly := {},
-
-//  retrieveManaged := true,
-  assemblyJarName in assembly := "n2s3.jar",
-
  /********************************************************************************************************************
   * Publishing options
   ******************************************************************************************************************/
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestAERInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestAERInputStream.scala
index 13b1a555..8a58c427 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestAERInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestAERInputStream.scala
@@ -9,7 +9,7 @@ import java.io.IOException
 import fr.univ_lille.cristal.emeraude.n2s3.UnitSpec
 
 class TestAERInputStream extends UnitSpec {
-  val filename = "src/test/resources/aerdata/freeway2.mat.dat"
+  val filename = this.getClass.getResource("/aerdata/freeway2.mat.dat").getFile
 
   //TODO: Using the following file makes the tests fail. Is the file right?
   //val filename = "src/test/resources/aerdata/freeway.mat.dat"
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestMnistInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestMnistInputStream.scala
index 1fe22f0b..7f4e7566 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestMnistInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/features/io/TestMnistInputStream.scala
@@ -10,8 +10,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.UnitSpec
 import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStream
 
 class TestMnistInputStream extends UnitSpec {
-  val testImageFileName: String = "src/test/resources/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "src/test/resources/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "MnistInputStream" should "not be at the end of a not read file" in {
     val inputStream = new MnistFileInputStream(testImageFileName, testLabelFileName)
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestFlatMapInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestFlatMapInputStream.scala
index de12d783..58e691fd 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestFlatMapInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestFlatMapInputStream.scala
@@ -7,8 +7,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.support.io.InputStreamCombinators._
   * Created by guille on 6/2/16.
   */
 class TestFlatMapInputStream extends UnitSpec {
-  val testImageFileName: String = "data/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "data/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "Flatmap an empty array" should "be at end" in {
     val stream = InputStream(new Array[Seq[Int]](0)).flatMap(array => array)
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestGroupByInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestGroupByInputStream.scala
index 712469be..44f8f388 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestGroupByInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestGroupByInputStream.scala
@@ -9,8 +9,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStrea
   * Created by guille on 6/2/16.
   */
 class TestGroupByInputStream extends UnitSpec {
-  val testImageFileName: String = "data/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "data/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "GroupBy input stream" should "group all subsequent elements by condition" in {
     val wrappee = new SequenceInputStream(List(1,1,1,1))
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestOptionInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestOptionInputStream.scala
index 29bf4370..40000017 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestOptionInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestOptionInputStream.scala
@@ -7,8 +7,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStrea
   * Created by guille on 6/2/16.
   */
 class TestOptionInputStream extends UnitSpec {
-  val testImageFileName: String = "src/test/resources/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "src/test/resources/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "Option input stream" should "return Some element if available" in {
     val wrappee = new MnistFileInputStream(testImageFileName, testLabelFileName)
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestPositionInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestPositionInputStream.scala
index 9af25fd8..f2b9476e 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestPositionInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestPositionInputStream.scala
@@ -7,8 +7,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStrea
   * Created by guille on 6/2/16.
   */
 class TestPositionInputStream extends UnitSpec {
-  val testImageFileName: String = "src/test/resources/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "src/test/resources/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "Position input stream" should "start in zero" in {
     val wrappee = new MnistFileInputStream(testImageFileName, testLabelFileName)
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestRepeatInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestRepeatInputStream.scala
index d8ed9db3..2489e1a1 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestRepeatInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestRepeatInputStream.scala
@@ -7,8 +7,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStrea
   * Created by guille on 6/2/16.
   */
 class TestRepeatInputStream extends UnitSpec {
-  val testImageFileName: String = "src/test/resources/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "src/test/resources/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "Repeat input stream 1 times" should "yield the wrappee" in {
     val wrappee = new MnistFileInputStream(testImageFileName, testLabelFileName)
diff --git a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestTakeInputStream.scala b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestTakeInputStream.scala
index d5fa05c1..0762772f 100644
--- a/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestTakeInputStream.scala
+++ b/n2s3/src/test/scala/fr/univ_lille/cristal/emeraude/n2s3/support/io/TestTakeInputStream.scala
@@ -9,8 +9,8 @@ import fr.univ_lille.cristal.emeraude.n2s3.features.io.input.MnistFileInputStrea
   * Created by guille on 6/2/16.
   */
 class TestTakeInputStream extends UnitSpec {
-  val testImageFileName: String = "src/test/resources/train2k-images.idx3-ubyte"
-  val testLabelFileName: String = "src/test/resources/train2k-labels.idx1-ubyte"
+  val testImageFileName: String = this.getClass.getResource("/train2k-images.idx3-ubyte").getFile
+  val testLabelFileName: String = this.getClass.getResource("/train2k-labels.idx1-ubyte").getFile
 
   "Take input stream" should "read up to its limit if wrappee is bigger" in {
     val wrappee = new MnistFileInputStream(testImageFileName, testLabelFileName)
diff --git a/n2s3_examples/build.sbt b/n2s3_examples/build.sbt
index 1c6df035..431b6682 100644
--- a/n2s3_examples/build.sbt
+++ b/n2s3_examples/build.sbt
@@ -4,14 +4,6 @@
 
 lazy val n2s3_examples = (project in file(".")).settings(
   name             := "N2S3_examples",
-  version          := "0.3-SNAPSHOT",
-  organization     := "fr.univ-lille.cristal",
-  scalaVersion     := "2.11.6",
-  scalacOptions    := Seq("-unchecked", "-deprecation", "-encoding", "utf8"),
-
-  // Special repository resolver. Used to download project dependencies
-  resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
-
 
   /*********************************************************************************************************************
     * Dependencies
@@ -19,15 +11,7 @@ lazy val n2s3_examples = (project in file(".")).settings(
   libraryDependencies ++= {
     val akkaV = "2.3.7"
     Seq(
-      "fr.univ-lille.cristal" %% "n2s3"       % "0.3-SNAPSHOT",
       "com.typesafe.akka" %% "akka-cluster"   % akkaV
     )
   }
-)
-
-lazy val publishNessyLocal = taskKey[Unit]("Publishes the latest version of n2s3 to the local repository to use it as dependency of the examples")
-publishNessyLocal := {
-  scala.sys.process.Process("sbt publish-local", new File(new File("").getAbsoluteFile().getParentFile(), "n2s3")).!
-}
-
-compile <<= (compile in Compile) dependsOn publishNessyLocal
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/project/assembly.sbt b/project/assembly.sbt
new file mode 100644
index 00000000..1741de9d
--- /dev/null
+++ b/project/assembly.sbt
@@ -0,0 +1 @@
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.3")
\ No newline at end of file
diff --git a/project/plugins.sbt b/project/plugins.sbt
new file mode 100644
index 00000000..dcf94072
--- /dev/null
+++ b/project/plugins.sbt
@@ -0,0 +1,3 @@
+// create eclipse definition project
+addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.5.0")
+addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.8.2")
\ No newline at end of file
-- 
GitLab