Brook, Great solution. Kind of complicated but totally doable.
I won't pretend to understand the complexity of the cfc you have, but all that overhead to run one cfc seems extreme. I have a couple suggestions. 1- use native Ant to do it all. You can <concat> files and run jsmin or yui compressor straight from ant. I was experimenting with this most of yesterday with some pretty good success and can share it if you are interested. 2- use scripting from within ant. You can include the Rhino js.jar scripting engine, or groovy, or any number of JSR-223 compatible scripting languages and get access to Ant's methods like making a <fileset> from within javascript, as well as all the underlying java libraries. This works really well because you can still use a cool programming language and keep it all within Ant, no railo or cfml dependencies required. Anyways, just some ideas, and like I said, I can share some of that with you. I plan on talking about this stuff a little bit from my CF Unconference talk at MAX this October, so if you're in the neighborhood... nathan strutz [www.dopefly.com] [hi.im/nathanstrutz] [about.me/nathanstrutz] On Sun, Aug 7, 2011 at 6:37 AM, Brook Davies <cft...@logiforms.com> wrote: > > Hey Nathan, > > So what I was doing was this. I am working on a new web app written with > extJS. I have a CFC that I call that builds the client side app. It reads > all of the ux and util directories and generates a config file used by > jsBuilder to compress, combine and minify the JS used on the client side as > well as compress and move CSS and resources. > > I am working towards getting a CI server setup and also need to ensure all > developers can run a build locally. That's where the problem arises. The > developers (JS developers) will not have CF installed on their local > machine > (or our pre-configured EC2 instance), and so I need to move the process of > generating the jsBuilder config and executing it out of CF and into > something that can run on any developers workstation - without a big > install > and setup. > > Since its just 1 CFC, I thought I could just use the java classes. But of > course there are dependencies. > > I found a wicked, super cool solution to this last night! I downloaded > Ralio > Express and was able to get it to execute my CFC with basically zero setup. > Ralio Express is freakin awesome! There's no installer, you just run > start.bat to start the server and stop.bat to stop it. So I've added it to > my SVN and written an ANT task that starts it up and then runs the CFC that > indexes all the directories, read in an XML config file and calls (via > cfexcecute) the CFC that handles the build. > > My ANT task has these targets: > > <target name="startRalio" description="Starting Ralio Server" > depends="MakeDirectories"> > <java jar="tools/build/ralio/lib/start.jar" > dir="tools/build/ralio/" > fork="true" > spawn="true" > maxmemory="512M"> > <arg value="-h"/> > <arg value="-DSTOP.PORT=8887"/> > <arg value="-DSTOP.KEY=railo"/> > </java> > > <!-- wait for server to start up --> > <waitfor maxwait="10" maxwaitunit="second"> > <and> > <socket server="localhost" port="8888"/> > <http url="http://localhost:8888/index.cfm"/> > </and> > </waitfor> > > > </target> > > <target name="doBuild" description="Call the Ralio script to in turn > call JsBuilder and do compilation" depends="startRalio"> > <get src="http://localhost:8888/build/doBuild.cfm" > dest="buildresult.txt" /> > > <!-- look for buildresult.txt, read the result and throw an > error if any errors exist --> > <loadfile property="buildresult" > srcFile="${desktop.build.dir}buildresult.html"/> > <echo message="${buildresult}"/> > > <antcall target="checkResult" /> > <antcall target="stopRalio" /> > </target> > > > Never used Ralio before, but very impressed with it! > > Brook > > -----Original Message----- > From: Nathan Strutz [mailto:str...@gmail.com] > Sent: August-06-11 12:39 PM > To: cf-talk > Subject: Re: Run a class file generated with CF outside of CF > > > Yeah, it's probably not going to happen. I mean, I am getting famous for > saying that it's software, so we can do anything, but the problem is the > amount of work it takes to do a thing. In this case you have to load a good > amount of the CF server into memory, all the other related classes (one > ..class for the cfc, one for each cffunction, etc.), then fake a request & > response object, or whatever servlets do (I knew at one point). Your best > bet is to not do this. > > It would be much easier to call your CF server rather than try to use the > generated code out of context. There are many ways to call into CF from > Java. The easiest one would be to hit it via a HTTP URI. Second easiest > would be a web service. Third, you can use the CF services gateway - you > can > set up a local socket listener, which should be really performant. Also, I > think Terrence Ryan had a project on RIAForge that lets you call it via the > command line console. > > I wonder, what is the underlying reason for wanting to call the generated > classes? Sort of an odd request. Why are you doing this? Maybe there's a > better way to accomplish your end goal. > > nathan strutz > [www.dopefly.com] [hi.im/nathanstrutz] [about.me/nathanstrutz] > > > On Sat, Aug 6, 2011 at 10:53 AM, Brook Davies <cft...@logiforms.com> > wrote: > > > > > Hey, I don't know if this is possible. I want to take a class file > > from the cfclasses/ directory and run it from the command line outside > > of the CF server. It complains about not being able to find some cf > related classes. > > I assume this is not at all possible since the classes include lots of > > CF specific classes for various functions. Is that right? Is this not > > possible? > > > > > > > > Brook > > > > > > > > > > > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Order the Adobe Coldfusion Anthology now! http://www.amazon.com/Adobe-Coldfusion-Anthology/dp/1430272155/?tag=houseoffusion Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:346570 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/groups/cf-talk/unsubscribe.cfm