Прежде всего, я полный начинающий программист. Поэтому я был бы очень признателен за подробные ответы, насколько это возможно (поэтапные объяснения предпочтительнее, если это возможно).Проблема с настройкой клонированного проекта scala - классы не найдены
Я работаю с IntelliJ Idea 14.0.2 и клонировал следующий репозиторий из BitBucket (я использовал проверку от контроля версий - ртутный):
https://bitbucket.org/oscarlib/oscar (особенно мне нужно дискретные примеры моделирования событий «дез-примеры «для моей магистерской диссертации)
Моя проблема в том, что определенные классы не распознаются другими модулями, а импорт маркируется как« неиспользуемый », хотя они и не должны. Кроме того, код сборки также содержит ошибки и неиспользуемые импорты.
в этом фрагменте кода, например, SBT, де, xerial, sbtunidoc и построить не могут быть решены, и весь импорт помечаются как неиспользуемые:
package oscar
import sbt._
import sbt.Keys._
import java.lang.Boolean.getBoolean
import de.johoop.jacoco4sbt.JacocoPlugin._
import xerial.sbt.Pack._
import sbtunidoc.Plugin._
object OscarBuild extends Build {
Я думаю, там должны быть некоторые основные библиотеки отсутствуют, но я просто не могу понять, какие из них. Я установил плагин scala и правильно установил проект sdk (java 1.7). Существует Описана на BitBucket о том, как построить проект от SBT, но это не очень полезно для меня:
https://bitbucket.org/oscarlib/oscar/wiki/oscarbuild
Кто-нибудь уже имели подобные проблемы? Или кто-нибудь будет так добр и попробует настроить этот конкретный проект и дать инструкцию о том, как это сделать?
спасибо!
Полный код Сложения:
package oscar
import sbt._
import sbt.Keys._
import java.lang.Boolean.getBoolean
import de.johoop.jacoco4sbt.JacocoPlugin._
import xerial.sbt.Pack._
import sbtunidoc.Plugin._
object OscarBuild extends Build {
object BuildSettings {
val buildOrganization = "oscar"
val buildVersion = "1.2.0.beta"
val buildScalaVersion = "2.11.0"
val buildSbtVersion= "0.13.0"
val osNativeLibDir = (sys.props("os.name"), sys.props("os.arch")) match {
case (os, arch) if os.contains("Mac") && arch.endsWith("64") => "macos64"
case (os, arch) if os.contains("Linux") && arch.endsWith("64") => "linux64"
case (os, arch) if os.contains("Windows") && arch.endsWith("32") => "windows32"
case (os, arch) if os.contains("Windows") && arch.endsWith("64") => "windows64"
case (os, arch) => sys.error("Unsupported OS [${os}] Architecture [${arch}] combo, OscaR currently supports macos64, linux64, windows32, windows64")
}
val buildSettings = Defaults.defaultSettings ++ Seq(
organization := buildOrganization,
version := buildVersion,
scalacOptions in Compile ++= Seq("-encoding", "UTF-8", "-deprecation", "-feature", "-unchecked", "-Xdisable-assertions"),
testOptions in Test <+= (target in Test) map {
t => Tests.Argument(TestFrameworks.ScalaTest, "junitxml(directory=\"%s\")" format (t/"test-reports")) },
parallelExecution in Test := false,
fork in Test := true,
javaOptions in Test += "-Djava.library.path=../lib:../lib/" + osNativeLibDir,
unmanagedBase <<= baseDirectory { base => base/"../lib/" }, // unfortunately does not work
unmanagedClasspath in Compile <+= (baseDirectory) map { bd => Attributed.blank(bd/"../lib/") },
scalaVersion := buildScalaVersion)
}
object Resolvers {
val typesafe = "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
val artifactory = "Artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"
val sbtResolvers = Seq (artifactory)
}
object Dependencies {
//val scalatest = "org.scalatest" %% "scalatest" % "2.0.M5b"
val junit = "junit" % "junit" % "4.8.1" % "test"
val scalaswing = "org.scala-lang" % "scala-swing" % "2.11.0-M7"
// DSL for adding source dependencies ot projects.
def dependsOnSource(dir: String): Seq[Setting[_]] = {
import Keys._
Seq(unmanagedSourceDirectories in Compile <<= (unmanagedSourceDirectories in Compile, baseDirectory in ThisBuild) { (srcDirs, base) => (base/dir) +: srcDirs },
unmanagedJars in Compile <++= (baseDirectory in ThisBuild) map { base =>
\t val libs = base/dir
\t val dirs = libs // (libs/"batik") +++ (libs/"libtw") +++ (libs/"kiama")
\t (dirs ** "*.jar").classpath
\t },
unmanagedSourceDirectories in Test <<= (unmanagedSourceDirectories in Test, baseDirectory in ThisBuild) { (srcDirs, base) => (base/dir) +: srcDirs })
}
implicit def p2source(p: Project): SourceDepHelper = new SourceDepHelper(p)
final class SourceDepHelper(p: Project) {
def dependsOnSource(dir: String): Project =
p.settings(Dependencies.dependsOnSource(dir): _*)
}
}
import BuildSettings._
import Dependencies._
import Resolvers._
val commonDeps = Seq(/*scalatest,*/junit,scalaswing)
TaskKey[Unit]("zipsrc") <<= baseDirectory map { bd => println(bd); IO.zip(Path.allSubpaths(new File(bd + "/src/main/scala")),new File(bd +"/oscar-src.zip")) }
val hello = TaskKey[Unit]("hello", "hello documentation")
val helloTask = hello := {
println("Hello World")
}
val printLinprog = TaskKey[Unit]("printLinprog", "printLinProg")
val printLinprogTask = printLinprog := {
println("base "+baseDirectory)
println(baseDirectory.map { base => base })
}
val zipsrc = TaskKey[Unit]("zipsrc","zip the source") <<= baseDirectory map { bd => println(bd); IO.zip(Path.allSubpaths(new File(bd + "/src/main/scala")),new File(bd +"/oscar-src.zip")) }
val foo = TaskKey[Unit]("foo","foo task") <<= baseDirectory map { bd => println(bd)}
val commonTasks = Seq(helloTask,foo,zipsrc,printLinprogTask)
//
lazy val jacoco_settings = Defaults.defaultSettings ++ Seq(jacoco.settings: _*)
//jacoco.reportFormats in jacoco.Config := Seq(XMLReport("utf-8"), HTMLReport("utf-8"))
lazy val oscar = Project(
id = "oscar",
base = file("."),
//
settings = buildSettings ++ jacoco_settings ++
packSettings ++ unidocSettings ++
Seq (/*resolvers := sbtResolvers,*/ libraryDependencies ++= commonDeps) ++
sbtassembly.Plugin.assemblySettings ++
commonTasks,
aggregate = Seq(oscarVisual,oscarCp,oscarCbls,oscarFzn,oscarLinprog,oscarDes,oscarDfo),
dependencies = Seq(oscarCp,oscarCbls,oscarFzn,oscarDes,oscarDfo,oscarLinprog)) dependsOnSource("lib")
lazy val oscarCbls = Project(
id = "oscar-cbls",
base = file("oscar-cbls"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
\t \t sbtassembly.Plugin.assemblySettings ++
\t \t commonTasks,
dependencies = Seq(oscarVisual)) dependsOnSource("lib")
lazy val oscarCp = Project(
id = "oscar-cp",
base = file("oscar-cp"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
\t \t sbtassembly.Plugin.assemblySettings ++
\t \t commonTasks,
dependencies = Seq(oscarAlgo,oscarVisual)) dependsOnSource("lib")
lazy val oscarFzn = Project(
id = "oscar-fzn",
base = file("oscar-fzn"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
\t \t sbtassembly.Plugin.assemblySettings ++
\t \t commonTasks,
dependencies = Seq(oscarCbls)) dependsOnSource("lib")
lazy val oscarDes = Project(
id = "oscar-des",
base = file("oscar-des"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
\t \t sbtassembly.Plugin.assemblySettings ++ \t \t
commonTasks,
dependencies = Seq(oscarInvariants)) dependsOnSource("lib")
lazy val oscarDfo = Project(
id = "oscar-dfo",
base = file("oscar-dfo"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
sbtassembly.Plugin.assemblySettings ++
commonTasks,
dependencies = Seq(oscarAlgebra,oscarVisual,oscarAlgo)) dependsOnSource("lib")
lazy val oscarLinprog = Project(
id = "oscar-linprog",
base = file("oscar-linprog"),
settings = buildSettings ++ jacoco_settings ++ Seq(libraryDependencies ++= commonDeps) ++
sbtassembly.Plugin.assemblySettings ++
commonTasks,
dependencies = Seq(oscarAlgebra)
) dependsOnSource("lib")
lazy val oscarAlgo = Project(
id = "oscar-algo",
settings = buildSettings ++ jacoco_settings ++ Seq (libraryDependencies ++= commonDeps)
++ commonTasks,
base = file("oscar-algo"),
dependencies= Seq(oscarUtil,oscarVisual)) dependsOnSource("lib")
lazy val oscarVisual = Project(
id = "oscar-visual",
settings = buildSettings ++ jacoco_settings ++ Seq (libraryDependencies ++= commonDeps) ++
commonTasks,
base = file("oscar-visual"),
dependencies= Seq(oscarUtil)) dependsOnSource("lib")
lazy val oscarInvariants = Project(
id = "oscar-invariants",
settings = buildSettings ++ jacoco_settings ++ Seq (libraryDependencies ++= commonDeps) ++ commonTasks,
base = file("oscar-invariants")) dependsOnSource("lib")
lazy val oscarAlgebra = Project(
id = "oscar-algebra",
settings = buildSettings ++ jacoco_settings ++ Seq (libraryDependencies ++= commonDeps) ++ commonTasks,
base = file("oscar-algebra")) dependsOnSource("lib")
lazy val oscarUtil = Project(
id = "oscar-util",
settings = buildSettings ++ jacoco_settings ++ Seq (libraryDependencies ++= commonDeps) ++ commonTasks,
base = file("oscar-util")) dependsOnSource("lib")
}