play2war / play2-war-plugin

WAR Plugin for Play framework 2.x
Apache License 2.0
443 stars 71 forks source link

java.lang.AbstractMethodError with play 2.3.1 with sbt 0.13 with scala 2.10.4 and play2-war-1.2beta1 #276

Closed benmullin333 closed 9 years ago

benmullin333 commented 9 years ago

''' [debug] [debug] Initial source changes: [debug] removed:Set() [debug] added: Set() [debug] modified: Set() [debug] Removed products: Set() [debug] External API changes: API Changes: Set() [debug] Modified binary dependencies: Set() [debug] Initial directly invalidated sources: Set() [debug] [debug] Sources indirectly invalidated by: [debug] product: Set() [debug] binary dep: Set() [debug] external source: Set() [debug] All initially invalidated sources: Set() [debug] Copy resource mappings: debug java.lang.AbstractMethodError at play.PlayInternalKeys$class.$init$(PlayInternalKeys.scala:20) at com.github.play2war.plugin.Play2WarPlugin$.(Play2WarPlugin.scala:21) at com.github.play2war.plugin.Play2WarPlugin$.(Play2WarPlugin.scala) at CoPlayAuthenticationBuild$.warProjectSettings$lzycompute(Build.scala:103) at CoPlayAuthenticationBuild$.warProjectSettings(Build.scala:103) at CoPlayAuthenticationBuild$.mainProject$lzycompute(Build.scala:109) at CoPlayAuthenticationBuild$.mainProject(Build.scala:108) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at sbt.ReflectUtilities$$anonfun$allValsC$1$$anonfun$apply$2.apply(ReflectUtilities.scala:50) at sbt.ReflectUtilities$$anonfun$allValsC$1$$anonfun$apply$2.apply(ReflectUtilities.scala:48) at scala.Option$WithFilter.foreach(Option.scala:208) at sbt.ReflectUtilities$$anonfun$allValsC$1.apply(ReflectUtilities.scala:48) at sbt.ReflectUtilities$$anonfun$allValsC$1.apply(ReflectUtilities.scala:44) at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:108) at sbt.ReflectUtilities$.allValsC(ReflectUtilities.scala:44) at sbt.ReflectUtilities$.allVals(ReflectUtilities.scala:64) at sbt.Build$class.projects(Build.scala:14) at CoPlayAuthenticationBuild$.projects(Build.scala:13) at sbt.Build$class.projectDefinitions(Build.scala:13) at CoPlayAuthenticationBuild$.projectDefinitions(Build.scala:13) at sbt.Load$.sbt$Load$$projectsFromBuild(Load.scala:458) at sbt.Load$$anonfun$24.apply(Load.scala:415) at sbt.Load$$anonfun$24.apply(Load.scala:415) at scala.collection.immutable.Stream.flatMap(Stream.scala:442) at sbt.Load$.loadUnit(Load.scala:415) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:93) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:92) at sbt.BuildLoader.apply(BuildLoader.scala:143) at sbt.Load$.loadAll(Load.scala:312) at sbt.Load$.loadURI(Load.scala:264) at sbt.Load$.load(Load.scala:260) at sbt.Load$.load(Load.scala:251) at sbt.Load$.apply(Load.scala:134) at sbt.Load$.defaultLoad(Load.scala:37) at sbt.BuiltinCommands$.doLoadProject(Main.scala:473) at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:467) at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:467) at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:60) at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:60) at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:62) at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:62) at sbt.Command$.process(Command.scala:95) at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100) at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100) at sbt.State$$anon$1.process(State.scala:179) at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100) at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100) at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) at sbt.MainLoop$.next(MainLoop.scala:100) at sbt.MainLoop$.run(MainLoop.scala:93) at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:71) at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:66) at sbt.Using.apply(Using.scala:25) at sbt.MainLoop$.runWithNewLog(MainLoop.scala:66) at sbt.MainLoop$.runAndClearLast(MainLoop.scala:49) at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:33) at sbt.MainLoop$.runLogged(MainLoop.scala:25) at sbt.StandardMain$.runManaged(Main.scala:57) at sbt.xMain.run(Main.scala:29) at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:109) at xsbt.boot.Launch$.withContextLoader(Launch.scala:129) at xsbt.boot.Launch$.run(Launch.scala:109) at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:36) at xsbt.boot.Launch$.launch(Launch.scala:117) at xsbt.boot.Launch$.apply(Launch.scala:19) at xsbt.boot.Boot$.runImpl(Boot.scala:44) at xsbt.boot.Boot$.main(Boot.scala:20) at xsbt.boot.Boot.main(Boot.scala) [error] java.lang.AbstractMethodError [error] Use 'last' for the full log. [debug] > load-failed [debug] > last '''

with plugins.sbt: ''' logLevel := Level.Warn resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/" addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.1") resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots" addSbtPlugin("io.gatling" % "sbt-plugin" % "1.0") addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "1.2-beta1") '''

with Build.scala: ''' import sbt. import sbt.Keys. import play.PlayImport.PlayKeys._

import java.io.{File ⇒ JFile}

import scala.annotation.tailrec import io.gatling.sbt.GatlingPlugin

import com.typesafe.sbt.SbtNativePackager.Universal import com.github.play2war._

object CoPlayAuthenticationBuild extends sbt.Build {

val appName = "co-play-authentication" val appVersion = "1.2.9"

val appDependencies = Seq( "com.typesafe" % "config" % "1.2.0", "com.typesafe.scala-logging" %% "scala-logging-slf4j" % "2.1.2",

"org.mockito" % "mockito-core" % "1.9.5",
"org.scalatest"               %% "scalatest"          % "2.1.7",
"org.forgerock.openam" % "openam-clientsdk" % "11.0.0",
"net.codingwell" %% "scala-guice" % "4.0.0-beta4",

// WebJars infrastructure
"org.webjars" % "webjars-locator" % "0.13",
"org.webjars" %% "webjars-play" % "2.2.1-2",

// WebJars dependencies
"org.webjars" % "underscorejs" % "1.6.0-1",
"org.webjars" % "jquery" % "1.11.0-1",
"org.webjars" % "bootstrap" % "3.1.1" exclude("org.webjars", "jquery"),
"org.webjars" % "angularjs" % "1.2.14" exclude("org.webjars", "jquery"),

"com.pingfederate" % "opentoken-agent" % "2.5.2",
"javax.servlet" % "javax.servlet-api" % "3.1.0",
"commons-collections" % "commons-collections" % "3.2.1",
"commons-beanutils" % "commons-beanutils" % "1.8.2",

// Swagger
"com.wordnik" %% "swagger-play2" % "1.3.10"  excludeAll(ExclusionRule(organization = "org.slf4j")),
"com.wordnik" %% "swagger-play2-utils" % "1.3.10"  excludeAll(ExclusionRule(organization = "org.slf4j")),

"com.github.play2war.ext" %% "redirect-playlogger" % "1.0.1",
play.PlayImport.ws

)

lazy val dist = com.typesafe.sbt.SbtNativePackager.NativePackagerKeys.dist

val publishDist = TaskKeysbt.File

lazy val publishSettings = Seq( publishArtifact in Compile := false,

publish <<= (publish) dependsOn dist,
publishLocal <<= (publishLocal) dependsOn dist,

artifact in publishDist ~= {
  (art: Artifact) => art.copy(`type` = "zip", extension = "zip")
},

crossPaths := false,

organization := "com.weco",
publishMavenStyle := true,
pomIncludeRepository := { x => false },

publishDist <<= (target in Universal, normalizedName, version) map { (targetDir, id, version) =>
  val packageName = "%s-%s" format(id, version)
  targetDir / (packageName + ".zip")
},

publishTo := {
  val repo = "https://artifacts.weco.in/artifactory/"
  if (version.value.trim.endsWith("SNAPSHOT"))
    Some("snapshots" at repo + "libs-snapshot-local")
  else
    Some("releases" at repo + "libs-release-local")
},

credentials += Credentials(Path.userHome / ".ivy2" / ".credentials")

) ++ addArtifact(artifact in publishDist, publishDist)

lazy val commonSettings = Seq( version := appVersion, sourceGenerators in Compile <+= (fullClasspath in Runtime in codegenProject, runner, sourceManaged, streams, routesImport) map { (cp, r, out, s, ri) => runCodeGen("codegen.SourceCodeGenerators", cp, r, out, s)},

codeGenerator <<= (run in Compile in codegenProject),

resolvers += "forgerock-repo" at "http://maven.forgerock.org/repo/releases/",
resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots",
resolvers += MavenRepository("Checked In Repo", new File("./lib/managed").toURI.toString),

scalacOptions ++= Seq("-unchecked", "-language:reflectiveCalls", "-deprecation", "-feature", "-language:postfixOps", "-language:existentials"),
playDefaultPort := 8999,
libraryDependencies ++= appDependencies

)

lazy val warProjectSettings = Play2WarPlugin.play2WarSettings ++ Seq( Play2WarKeys.filteredArtifacts := Seq() )

val codeGenerator = InputKeyUnit lazy val mainProject = Project(appName, file(".")).enablePlugins(play.PlayScala) .settings(commonSettings ++ warProjectSettings: ) .settings( ).settings(publishSettings: )

val gatlingDependencies = Seq( "org.mockito" % "mockito-core" % "1.9.5", "io.gatling.highcharts" % "gatling-charts-highcharts" % "2.0.1", "org.scalatest" %% "scalatest" % "2.1.7", "io.gatling" % "test-framework" % "1.0", play.PlayImport.ws )

lazy val gatlingProject = Project("gatling", file("gatling")).enablePlugins(GatlingPlugin).settings( version := appVersion, run := TaskKeyUnit, resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature", "-language:postfixOps", "-language:existentials"), libraryDependencies ++= gatlingDependencies )

val codegenDependencies = Seq( "org.osgi" % "org.osgi.core" % "6.0.0", "com.wordnik" % "swagger-codegen_2.10.2" % "2.0.18-SNAPSHOT", "org.json4s" %% "json4s-jackson" % "3.2.10", "io.backchat.inflector" %% "scala-inflector" % "1.3.5", "commons-io" % "commons-io" % "2.3", "ch.qos.logback" % "logback-classic" % "1.1.2", "org.rogach" %% "scallop" % "0.9.5", "junit" % "junit" % "4.11" % "test", "org.scalatest" %% "scalatest" % "2.1.7" % "test", "org.scalatra.scalate" %% "scalate-core" % "1.7.0", "org.scala-lang" % "scala-reflect" % "2.10.4" )

lazy val codegenProject = Project("codegen", file("codegen")).settings( scalaVersion := "2.10.4", mainClass in (Compile, run) := Some("codegen.MainCodeGenerators"), resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots", libraryDependencies ++= codegenDependencies )

def runCodeGen(mainFile: String, cp: Types.Id[Keys.Classpath], r: Types.Id[ScalaRun], out:Types.Id[JFile], s: Types.Id[Keys.TaskStreams]) = { val cachedFun = FileFunction.cached(out/"cached"/mainFile, FilesInfo.lastModified, FilesInfo.exists) {(in: Set[JFile]) => val tempDir = IO.createTemporaryDirectory val tempFile =tempDir/"generated.txt" tempFile.createNewFile()

    val args = Seq(out.getAbsolutePath, tempFile.getAbsolutePath)

    r.run(mainFile, cp.files, args, s.log)

    val generatedFiles = scala.io.Source.fromFile(tempFile).getLines.map(f ⇒ new JFile(f)).toSet
    tempDir.delete()
    generatedFiles
  }

@tailrec def getSubDir(in: Set[JFile], out: Set[JFile] = Set()): Set[JFile] = {
  if(in.isEmpty) out
  else if(in.head.isDirectory) getSubDir(in.tail ++ in.head.listFiles.toSet, out + in.head)
  else getSubDir(in.tail, out)
}

val inDirs = getSubDir(Set(new JFile("codegen/templates"), new JFile("specs"), new JFile("codegen/src")))
cachedFun(inDirs).filterNot { file =>file.name.endsWith("routes")}.toSeq

}

} '''

benmullin333 commented 9 years ago

oops