Paul,
Here is the modifications to jde-ant.el. I do not know how to add them
to CVS, do not know that I want that power :-). The changes are easy
just add the code found below to jde-ant.el and make this change in
jde-ant.el:
replace
(setq ant-command
(concat jde-ant-program " -Dbuffer=" buffer-file-name " "))
with
(if (string= (car jde-ant-invocation-style) "Script")
; then
(setq ant-command
(concat jde-ant-program " -Dbuffer=" buffer-file-name " "))
; else
(setq ant-command
(concat "java " (jde-ant-build-classpath) " "
jde-ant-class " -Dbuffer=" buffer-file-name " "))
)
To use jde-ant via Java invocation the user must specify where the
ant jar files are located through the jde-ant-dir variable. And where
the jdk is located via the jde-ant-jdk-dir variable. These are the
only
two defcustom variables that need to be set. Once that is done the
user is off to the races.
I have tested it out only with XEmacs and Win2k. I am fairly sure it
will work regardless, says here in fine print :-)
dwfa
;;; start of Douglas WF Acheson mod
;;; The next three custom variables and defun added by Douglas WF
Acheson to
;;; allow a user to select how ant is invoked, either by script or via
Java
(defcustom jde-ant-invocation-style (list "Script")
"*Specifies how to invoke ant. Ant can be invoked in one of two
ways.
The first is via the ant script/program that comes with ant.
The second if via java; here you specify which class to start.
usually org.apache.tools.ant.Main. Using this method you must
specify
the four required jar files (ant.jar, jaxp.jar, parser.jar,
tools.jar
from Sun) in the jde-ant-classpath.
Script -- invokes ant using the jde-ant-build-function
Java -- invokes ant via the class defined in jde-ant-class"
:group 'jde-project
:type '(list
(radio-button-choice
(const "Script")
(const "Java")
)
)
)
(defcustom jde-ant-jdk-dir nil
"*Root directory containing the jdk to invoke ant"
:group 'jde-project
:type 'string
)
(defcustom jde-ant-jdk-jars (list "tools.jar")
"*Contains the list of jdk jar files required by ant."
:group 'jde-project
:type '(repeat (file :tag "Jar"))
)
(defcustom jde-ant-class "org.apache.tools.ant.Main"
"*Specifies class to invoke for Ant."
:group 'jde-project
:type 'string
)
(defcustom jde-ant-dir nil
"*Directory where ant jar files are locationed."
:group 'jde-project
:type 'string
)
(defcustom jde-ant-jars (list "ant.jar" "crimson.jar" "jaxp.jar"
"optional.jar")
"*Contains the list of ant jars files."
:group 'jde-project
:type '(repeat (file :tag "Jar"))
)
(defcustom jde-ant-additional-jarfiles nil
"*Specifies the list of additional jar files. These list usually
contains
jar files that hold user defined tasks."
:group 'jde-project
:type '(repeat (file :tag "Path"))
)
(defun jde-ant-build-jarfiles (antPath antJarFiles jdkPath jdkJarFiles)
"Construct the list of jar files needed by ant."
(if (and (boundp 'jde-ant-dir) (boundp 'jde-ant-jars)
(boundp 'jde-ant-jdk-dir) (boundp 'jde-ant-jdk-jars))
; then
(progn
(setq jde-ant-cp nil)
(while antJarFiles
(setq jde-ant-cp (append jde-ant-cp (list (concat antPath "\"
(pop antJarFiles)))))
)
(while jdkJarFiles
(setq jde-ant-cp (append jde-ant-cp (list (concat jdkPath
"\lib\" (pop jdkJarFiles)))))
)
jde-ant-cp
)
; else
nil
)
)
(defun jde-ant-build-classpath ()
"Constructs the classpath used to invoke ant."
(if (and (boundp 'jde-ant-dir) (boundp 'jde-ant-jars)
(boundp 'jde-ant-jdk-dir) (boundp 'jde-ant-jdk-jars))
; then
(concat "-classpath "" (jde-build-classpath
(append (jde-ant-build-jarfiles
jde-ant-dir
jde-ant-jars
jde-ant-jdk-dir
jde-ant-jdk-jars
)
(if (boundp
'jde-ant-additional-jarfiles)
jde-ant-additional-jarfiles
)
)
) """
)
; else
""
) ; end if
)
;;; end of Douglas WF Acheson mod
=====
Douglas WF Acheson
__________________________________________________
Do You Yahoo!?
Make a great connection at Yahoo! Personals.
http://personals.yahoo.com