@@ -2,26 +2,20 @@ import sbt._
22import java .util .jar .Attributes .Name ._
33import Process ._
44
5- final class FunctionalJavaProject (info : ProjectInfo ) extends DefaultProject (info) {
5+ final class FunctionalJavaProject (info : ProjectInfo ) extends DefaultProject (info) with JavaDocProject {
66 override def compileOptions = target(Target .Java1_5 ) :: List (CompileOptions .Unchecked , " -encoding" , " UTF-8" ).map(CompileOption ) ++ super .compileOptions
77
88 override def javaCompileOptions = List (" -target" , " 1.5" , " -encoding" , " UTF-8" , " -Xlint:unchecked" ).map(JavaCompileOption ) ++ super .javaCompileOptions
99
10- override def packageOptions =
11- ManifestAttributes (
12- (IMPLEMENTATION_TITLE , " Functional Java" )
13- , (IMPLEMENTATION_URL , " http://functionaljava.org/" )
14- , (IMPLEMENTATION_VENDOR , " Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Jason Zaugg" )
15- , (SEALED , " true" )
16- ) :: Nil
17-
18- override protected def disableCrossPaths = true
19-
2010 override def mainJavaSourcePath = " src" / " main"
2111
2212 override def testScalaSourcePath = " src" / " test"
2313
24- override def managedStyle = ManagedStyle .Maven
14+ val scalacheckDependency = " org.scala-tools.testing" %% " scalacheck" % " 1.8" % " test"
15+
16+ override def testFrameworks = Seq (new TestFramework (" org.scalacheck.ScalaCheckFramework" ))
17+
18+ override protected def disableCrossPaths = true
2519
2620 override def packageSrcJar = defaultJarPath(" -sources.jar" )
2721
@@ -31,21 +25,29 @@ final class FunctionalJavaProject(info: ProjectInfo) extends DefaultProject(info
3125
3226 lazy val sourceArtifact = Artifact (artifactID, " src" , " jar" , Some (" sources" ), Nil , None )
3327
34- val scalacheckDependency = " org.scala-tools.testing" %% " scalacheck" % " 1.8" % " test"
28+ override def managedStyle = ManagedStyle .Maven
29+
30+ val authors = " Tony Morris, Runar Bjarnason, Tom Adams, Brad Clow, Ricky Clarkson, Jason Zaugg"
31+
32+ val projectNameFull = " Functional Java"
33+ val projectUrl = " http://functionaljava.org/"
34+
35+ override def packageOptions =
36+ ManifestAttributes (
37+ (IMPLEMENTATION_TITLE , projectNameFull)
38+ , (IMPLEMENTATION_URL , projectUrl)
39+ , (IMPLEMENTATION_VENDOR , authors)
40+ , (SEALED , " true" )
41+ ) :: Nil
3542
3643 override def packageToPublishActions = super .packageToPublishActions ++ Seq (packageSrc, packageTestSrc, packageDocs)
3744
38- override protected def docAction = javadocTask(mainLabel, mainSourceRoots, mainSources, mainDocPath, docClasspath).dependsOn(compile) describedAs " Generate Javadoc"
39-
40- def javadocTask (label : String , sourceRoot : PathFinder , sources : PathFinder , outputDirectory : Path , classpath : PathFinder ): Task = task {
41- val cmdLine = <x >javadoc - quiet - sourcepath {sourceRoot.get.toList.head} - d {outputDirectory} {sources.getPaths.mkString(" " )}</x >
42- log.debug(cmdLine.toString)
43- cmdLine !
44-
45- None
46- }
45+ override protected def docAction = javadocAction
4746
48- override def testFrameworks = Seq (new TestFramework (" org.scalacheck.ScalaCheckFramework" ))
47+ override def javadocOptions = Seq (
48+ WindowTitle (projectNameFull + " " + version.toString)
49+ , DocTitle (<div ><a href ={projectUrl} target =" _blank" >{projectNameFull}</a > {version.toString} API Specification </div >.toString)
50+ , Header (<div ><p ><em >Copyright 2008 - 2010 {authors}</em ></p >This software is released under an open source BSD licence.</div >.toString))
4951
5052 override def consoleInit =
5153"""
@@ -56,3 +58,32 @@ import org.scalacheck.Prop._
5658"""
5759
5860}
61+
62+ trait JavaDocProject {
63+ self : DefaultProject =>
64+
65+ sealed abstract class JavadocOption
66+
67+ case class WindowTitle (t : String ) extends JavadocOption
68+
69+ case class DocTitle (t : String ) extends JavadocOption
70+
71+ case class Header (html : String ) extends JavadocOption
72+
73+ def javadocOptions = Seq [JavadocOption ]()
74+
75+ def javadocAction = javadocTask(mainLabel, mainSourceRoots, mainSources, mainDocPath, docClasspath, javadocOptions).dependsOn(compile) describedAs " Generate Javadoc"
76+
77+ def javadocTask (label : String , sourceRoot : PathFinder , sources : PathFinder , outputDirectory : Path , classpath : PathFinder , options : Seq [JavadocOption ]): Task = task {
78+ val os = options flatMap {
79+ case WindowTitle (t) => Seq (" -windowtitle" , t)
80+ case DocTitle (t) => Seq (" -doctitle" , t)
81+ case Header (html) => Seq (" -header" , html)
82+ }
83+ val proc = Process (Seq (" javadoc" , " -quiet" , " -sourcepath" , sourceRoot.get.toList.head.toString, " -d" , outputDirectory.toString) ++ os ++ sources.getPaths)
84+ log.debug(proc.toString)
85+ proc !
86+
87+ None
88+ }
89+ }
0 commit comments