From ee87e10a9f9fe3d9779be37b7618e574a11bde6e Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sat, 24 Apr 2010 06:31:59 -0400 Subject: [PATCH] Plugins can now only be Scala sources. BND should be usable in a plugin now. --- sbt/src/main/scala/sbt/BuilderProject.scala | 4 +++- .../project/src-plugins/changes/JavaTest.java | 4 ++++ .../project/src-plugins/changes/TestPlugin.scala | 16 +++++++++++++++- sbt/src/sbt-test/project/src-plugins/test | 1 + 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 sbt/src/sbt-test/project/src-plugins/changes/JavaTest.java diff --git a/sbt/src/main/scala/sbt/BuilderProject.scala b/sbt/src/main/scala/sbt/BuilderProject.scala index c8de1a806..3504ebc72 100644 --- a/sbt/src/main/scala/sbt/BuilderProject.scala +++ b/sbt/src/main/scala/sbt/BuilderProject.scala @@ -135,6 +135,8 @@ final class BuilderProject(val info: ProjectInfo, val pluginPath: Path, rawLogge final class PluginBuilderProject(val info: ProjectInfo) extends BasicBuilderProject with ReflectiveTasks { override def name = "Plugin Builder" + // don't include Java sources because BND includes Java sources in its jar (#85) + def pluginSourceFilter: NameFilter = "*.scala" lazy val pluginUptodate = propertyOptional[Boolean](false) def tpe = "plugin definition" def managedSourcePath = path(BasicDependencyPaths.DefaultManagedSourceDirectoryName) @@ -167,7 +169,7 @@ final class BuilderProject(val info: ProjectInfo, val pluginPath: Path, rawLogge { FileUtilities.clean(managedSourcePath, log) orElse Control.lazyFold(plugins.get.toList) { jar => - Control.thread(FileUtilities.unzip(jar, extractTo(jar), sourceFilter, log)) { extracted => + Control.thread(FileUtilities.unzip(jar, extractTo(jar), pluginSourceFilter, log)) { extracted => if(!extracted.isEmpty) logInfo("\tExtracted source plugin " + jar + " ...") None diff --git a/sbt/src/sbt-test/project/src-plugins/changes/JavaTest.java b/sbt/src/sbt-test/project/src-plugins/changes/JavaTest.java new file mode 100644 index 000000000..2144be719 --- /dev/null +++ b/sbt/src/sbt-test/project/src-plugins/changes/JavaTest.java @@ -0,0 +1,4 @@ + +// should not be interpreted as a source file +public class JavaTest { +} \ No newline at end of file diff --git a/sbt/src/sbt-test/project/src-plugins/changes/TestPlugin.scala b/sbt/src/sbt-test/project/src-plugins/changes/TestPlugin.scala index 19e043b1f..5a65a4541 100644 --- a/sbt/src/sbt-test/project/src-plugins/changes/TestPlugin.scala +++ b/sbt/src/sbt-test/project/src-plugins/changes/TestPlugin.scala @@ -2,5 +2,19 @@ import sbt._ trait TestPlugin extends DefaultProject { - lazy val check = task { log.info("Test action"); None } + lazy val check = + task + { + try + { + Class.forName("JavaTest") + Some("Java source should not be compiled as part of the plugin") + } + catch + { + case _: ClassNotFoundException => + log.info("Test action") + None + } + } } \ No newline at end of file diff --git a/sbt/src/sbt-test/project/src-plugins/test b/sbt/src/sbt-test/project/src-plugins/test index 93b1260a4..12e491c5b 100644 --- a/sbt/src/sbt-test/project/src-plugins/test +++ b/sbt/src/sbt-test/project/src-plugins/test @@ -1,4 +1,5 @@ $ copy-file changes/TestPlugin.scala src/main/scala/TestPlugin.scala +$ copy-file changes/JavaTest.java src/main/java/JavaTest.java > publish > set project.name use-plugin-test