First, thanks to Ian MacLean for answering my
initial question about using Jscript with a <script> task!
I was able to get everything working until I got
brave and tried to define a custom task in Jscript :)
I use this nant
code:
<target name="test" description="test"
>
<call target="custom_tasks"
/>
<fmexport dbfile="db" user="us" pass="pw"
script="scriptit" />
<echo message="test complete"
/>
</target>
<target name="custom_tasks"
description="Create Custom Tasks for use" >
<script
language="JS" prefix="superego" >
<imports
refid="thread.imports"
/>
<code>
<![CDATA[
TaskNameAttribute("fmexport")
public
class fmexport extends
Task
{
protected
var sFilepath : String;
protected var
sAcct : String;
protected var sPass :
String;
protected var sScript :
String;
//
Create the property setters
TaskAttributeAttribute("dbfile", Required=true) public function set
dbfile(n_dbfile: String) { sFilepath = n_dbfile;
};
TaskAttributeAttribute("user", Required=true) public function set
user(n_user : String) { sAcct = n_user;
};
TaskAttributeAttribute("pass", Required=true) public function set
pass(n_pass : String) { sPass = n_pass;
} ;
TaskAttributeAttribute("script", Required=true) public function set
script(n_script : String) { sScript = n_script;
};
public
function fmexport() { };
protected
override function ExecuteTask() : void { Log(Level.Info, sFilepath + " " +
sAcct + " " + sPass + " " + sScript );
}
}
]]>
</code>
</script>
</target>
And I get this
result:
Z:\ratrace\inter\global\game\FileMaker>nant
test
NAnt 0.85 (Build 0.85.1954.0; nightly; 5/8/2005)
Copyright (C)
2001-2005 Gerry Shaw
http://nant.sourceforge.net
Target framework: Microsoft .NET Framework
1.1
Target(s) specified: test
test:
custom_tasks:
[script] Scanning assembly "jc-9hg7q" for extensions.
BUILD FAILED
INTERNAL ERROR
System.MissingMethodException: Constructor on type
nantea92a6f750e34b6dbc26f44e45b7b89c+fmexport not found.
at
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder
bin
der, Object[] args, CultureInfo culture, Object[]
activationAttributes)
at System.Activator.CreateInstance(Type
type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo
culture, Object[] activationAttributes)
at
System.Reflection.Assembly.CreateInstance(String typeName, Boolean ignoreCase,
BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo
culture
, Object[] activationAttributes)
at
NAnt.Core.TaskBuilder.CreateTask() in
d:\Source\nant-20050507T183440Z\src\NAnt.Core\TaskBuilder.cs:line
94
at NAnt.Core.TypeFactory.CreateTask(XmlNode taskNode,
Project proj) in
d:\Source\nant20050507T183440Z\src\NAnt.Core\TypeFactory.cs:line
316
at NAnt.Core.Project.CreateTask(XmlNode taskNode, Target
target) in d:\Source\nant20050507T183440Z\src\NAnt.Core\Project.cs:line
1019
at NAnt.Core.Target.Execute() in
d:\Source\nant-20050507T183440Z\src\NAnt.Core\Target.cs:line
245
at NAnt.Core.Project.Execute(String targetName, Boolean
forceDependencies)
in
d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line
887
at NAnt.Core.Project.Execute() in
d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line
839
at NAnt.Core.Project.Run() in
d:\Source\nant-20050507T183440Z\src\NAnt.Core\Project.cs:line 924
Observations:
I tried this with various permutations of constructors, all with no
joy.
Any Help would be appreciated!
-Norman