ANT task to interate through sub directories

I want to execute the same ANT target over a number of subdirectories. I also need to "pass" or set and environment variable which is the sub-directory name and pass it to the ANT target. I have researched the documentation, but have found no task that will do this. Any suggestions, short of writing my own ANT task?
thanks
Don

OK, so I wrote my own task, but I am having a bit of a problem:
creating an Ant task which loops through subdirectories and then calls an Ant target ? this is easy enough through the project.executeTarget method. I pass the subdirectory name as a property to the ?called? target. This I do through the project.setProperty method.
Yet the target only has the original value of the property and not the modified value. I am assuming that this is because once a target and its tasks are loaded, the properties are then fixed ? immutable.
So my strategy is to ?refresh? the target before my task executes the target. I was thinking to create a new target, do a shallow copy of info, copy to the project and then execute the new target. Thoughts? Other ideas?
Here is the sample ANT build code:
  <target name="build" >
      <IterateDirectoryTask RootDirectory="." ExecuteTarget="TestTarget"/>
  </target>
  <target name="TestTarget" >
      <echo message="Hello from TestTarget" />
      <echo message="   subdirectory = ${subdirectory}" />
  </target> And here is the TASK:
public class IterateDirectoryTask extends Task {
      private String _rootDirectory;
      private String _executeTargetName;
      public void setRootDirectory(String aDirectoryName) {
            _rootDirectory = aDirectoryName;
      public void setExecuteTarget(String aTargetName) {
            _executeTargetName =  aTargetName;
      public void execute() throws BuildException {
            if (_executeTargetName == null) {
                  throw new BuildException("ExecuteTarget must be specified");
            File lRootDirectory = new File(_rootDirectory);
            if (!lRootDirectory.isDirectory()) {
                  throw new BuildException("'"+_rootDirectory+"' is not a directory");
            File[] lFiles = lRootDirectory.listFiles();
            for (int i=0; i < lFiles.length; i++) {
                  if (lFiles.isDirectory()) {
project.setProperty("subdirectory", lFiles[i].getName());
Target lTarget = (Target)project.getTargets().get(_executeTargetName);
project.executeTarget(_executeTargetName);

Similar Messages

  • Loop through sub-directories

    Hi,
    I want to loop through the sub-directories of one given folder. How to correct the following problems?
    dir = args[0];
    try
    string [] dirlvl2Ent = Directory.GetDirectories(dir);
    for (string dirlvl2 in dirlvl2Ent)
    Error 1 ; expected F:\App8\Program.cs 50 37 ProcessSWFile
    Error 2 ; expected F:\App8\Program.cs 50 40 ProcessSWFile
    Error 3 Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement F:\App8\Program.cs 50 40 ProcessSWFile
    Many Thanks & Best Regards, Hua Min

    for should be foreach.
    string [] dirlvl2Ent = Directory.GetDirectories(dir);
    foreach(string dirlvl2 in dirlvl2Ent)
    jdweng

  • Not able to create a new domain through ant task

    Hi,
    I have to upgrade weblogic 8.1 to weblogic 10.3 and I am using vanilla version of it. the first step to it is to create weblogic domain and then configure it and then start teh server and then deploy it. The problem starts when I am creating the domain, I am using ant task for domain creation and following these steps
    http://download.oracle.com/docs/cd/E12840_01/wls/docs103/programming/ant_tasks.html
    when ant-task is trying to build the specified domain, it is looking for some config.xml and that config.xml should also generated by wlserver/ant task through a template. I have no idea, where and how to define that template.. hence getting following error.. tried hard but not able to get through. can anyone please help..
    Thanks in Advance
    Error stack trace:
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:27 PM IST> <Info> <Management> <BEA-1
    40013> <C:\WIRES\Standalone\weblogic\domains\THSStandAlone\config\config.xml not
    found>
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:27 PM IST> <Info> <Management> <BEA-1
    41254> <Generating new domain directory in C:\WIRES\Standalone\weblogic\domains\
    THSStandAlone>
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:28 PM IST> <Critical> <WebLogicServer
    <BEA-000362> <Server failed. Reason:[WLServer THS-SA-Admin] There are 1 nested errors:
    [WLServer THS-SA-Admin] weblogic.management.ManagementException: Failure during
    domain creation
    [WLServer THS-SA-Admin] at weblogic.management.internal.DomainDirectoryS
    ervice.generateDomain(DomainDirectoryService.java:229)
    [WLServer THS-SA-Admin] at weblogic.management.internal.DomainDirectoryS
    ervice.ensureDomainExists(DomainDirectoryService.java:152)
    [WLServer THS-SA-Admin] at weblogic.management.internal.DomainDirectoryS
    ervice.start(DomainDirectoryService.java:72)
    [WLServer THS-SA-Admin] at weblogic.t3.srvr.ServerServicesManager.startS
    ervice(ServerServicesManager.java:459)
    [WLServer THS-SA-Admin] at weblogic.t3.srvr.ServerServicesManager.startI
    nStandbyState(ServerServicesManager.java:164)
    [WLServer THS-SA-Admin] at weblogic.t3.srvr.T3Srvr.initializeStandby(T3S
    rvr.java:711)
    [WLServer THS-SA-Admin] at weblogic.t3.srvr.T3Srvr.startup(T3Srvr.java:4
    82)
    [WLServer THS-SA-Admin] at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:440)
    [WLServer THS-SA-Admin] at weblogic.Server.main(Server.java:67)
    [WLServer THS-SA-Admin] Caused by: com.bea.plateng.domain.script.ScriptException
    : Template "null" does not exist. Line 1
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.script.ScriptParserCla
    ssic$StateMachine.processRead(ScriptParserClassic.java:510)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.script.ScriptParserCla
    ssic$StateMachine.execute(ScriptParserClassic.java:428)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.script.ScriptParserCla
    ssic.parseAndRun(ScriptParserClassic.java:150)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.script.ScriptParserCla
    ssic.doExecute(ScriptParserClassic.java:112)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.script.ScriptParser.ex
    ecute(ScriptParser.java:73)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.DomainInfoHelper.execu
    teSilentScript(DomainInfoHelper.java:861)
    [WLServer THS-SA-Admin] at com.bea.plateng.domain.DomainInfoHelper.creat
    eDefaultDomain(DomainInfoHelper.java:1755)
    [WLServer THS-SA-Admin] at sun.reflect.NativeMethodAccessorImpl.invoke0(
    Native Method)
    [WLServer THS-SA-Admin] at sun.reflect.NativeMethodAccessorImpl.invoke(N
    ativeMethodAccessorImpl.java:39)
    [WLServer THS-SA-Admin] at sun.reflect.DelegatingMethodAccessorImpl.invo
    ke(DelegatingMethodAccessorImpl.java:25)
    [WLServer THS-SA-Admin] at java.lang.reflect.Method.invoke(Method.java:5
    97)
    [WLServer THS-SA-Admin] at weblogic.management.internal.DomainDirectoryS
    ervice.generateDomain(DomainDirectoryService.java:224)
    [WLServer THS-SA-Admin] ... 8 more
    [WLServer THS-SA-Admin] >
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:28 PM IST> <Notice> <WebLogicServer>
    <BEA-000365> <Server state changed to FAILED>
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:28 PM IST> <Error> <WebLogicServer> <
    BEA-000383> <A critical service failed. The server will shut itself down>
    [WLServer THS-SA-Admin] <Feb 16, 2009 1:49:28 PM IST> <Notice> <WebLogicServer>
    <BEA-000365> <Server state changed to FORCE_SHUTTING_DOWN>
    [WLServer THS-SA-Admin] Error in server execution (THS-SA-Admin)

    Thanks for your reply.
    I have seen sample xml and my target looks the same
    <wlserver dir="${weblogic.domain.dir}"
                             port="${weblogic.domain.admin.server.port}"
                             servername="${weblogic.domain.admin.server.name}"
                             username="${weblogic.domain.admin.user}"
                             domainname="${weblogic.domain.name}"
                             password="${weblogic.domain.admin.password}"
                             configFile="config.xml"
                             generateConfig="true"
                             action="start"
                             beahome="${env.BEA_HOME}"/>
    my requirement is to use ant task.. otherwise I am able to create through configuration wizard
    Thanks

  • ClassCastException using Subant and wldeploy ant task

    Hi!
    I'm using subant to call all diffrent build.xml files located in subdirectories. The buildfile looks like this:
    <project name="extern.call" default="callall">
         <target name="callall">
              <fileset      id="buildfile.set" dir=".." includes="*2/build.xml">
                   <exclude name="Br*2/*"/>
              </fileset>
              <subant target="deploy-local" inheritall ="false" failonerror="true">
                   <fileset      refid="buildfile.set"/>
              </subant>
         </target>
    </project>
    The first called build.xml files works fine ... but the execution of the second build.xml (it's not important which file is the second one, it's crash always at the second call), stop with a "java.lang.ClassCastException".
    See Stacktrace:
    [subant] weblogic.Deployer -debug -nowait -verbose -upload -noexit -name ClarifyRead -source \build\ClarifyRead\delivery\ClarifyRead.ear -targets myserver -adminurl t3://localhost:7001 -user weblogic -password ******** -deploy
    [subant] dumping Exception stack
    [subant] java.lang.ClassCastException
    [subant] at weblogic.management.deploy.utils.DeployerHelper.uploadSource(DeployerHelper.java:586)
    [subant] at weblogic.Deployer.runBodyWithAuthenticatedSubject(Deployer.java:824)
    [subant] at weblogic.Deployer.runBody(Deployer.java:711)
    [subant] at weblogic.utils.compiler.Tool.run(Tool.java:146)
    [subant] at weblogic.utils.compiler.Tool.run(Tool.java:103)
    [subant] at weblogic.Deployer.runMain(Deployer.java:566)
    [subant] at weblogic.Deployer.mainWithExceptions(Deployer.java:576)
    [subant] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [subant] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [subant] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    [subant] at java.lang.reflect.Method.invoke(Method.java:324)
    [subant] at weblogic.ant.taskdefs.management.WLDeploy.invokeMain(WLDeploy.java:264)
    [subant] at weblogic.ant.taskdefs.management.WLDeploy.execute(WLDeploy.java:204)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:65)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:340)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:65)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:340)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.Target.execute(Target.java:301)
    [subant] at org.apache.tools.ant.Target.performTasks(Target.java:328)
    [subant] at org.apache.tools.ant.Project.executeTarget(Project.java:1215)
    [subant] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:383)
    [subant] at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:182)
    [subant] at org.apache.tools.ant.taskdefs.SubAnt.execute(SubAnt.java:112)
    [subant] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:269)
    [subant] at org.apache.tools.ant.Task.perform(Task.java:364)
    [subant] at org.apache.tools.ant.Target.execute(Target.java:301)
    [subant] at org.apache.tools.ant.Target.performTasks(Target.java:328)
    [subant] at org.apache.tools.ant.Project.executeTarget(Project.java:1215)
    [subant] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:379)
    [subant] at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:135)
    There is no diffrent between using ant in eclipse environment or as standalone, the result it the same.
    Do someone else have the same problem?
    Kind regards
    Joseph

    Hi
    I got the same message and I couldn't resolve it too, I am wordering if you got the key to the problem?
    Thanks
    Daivd Huang

  • Creating Execute Queue through WLConfig ANT tasks

    We are planning to create a new Execute Queue for a existing server in weblogic 8.1. When we create a new execute queue through the web admin console it add the following line within the Server tag in config.xml.
    <?xml version="1.0" encoding="UTF-8"?>
    <Domain Name="weblogicdomain">
    <Server ListenAddress="" ListenPort="6110" Name="servername">
    <ExecuteQueue Name="FileDownloadsExecuteQueue" ThreadCount="1"/>
    </Server>
    ....Other resources....
    </Domain>
    Now we have to create this execute queue NOT through the web admin console but through wlconfig ANT tasks. How should we create this? There are samples ANT tasks to add a resource (JDBC connection pool etc) directly within the Domain tag of the config.xml but our requirement is to add a new element (ExecuteQueue) within the existing server tag. As the server is already created we cannot create server mbean and nest it with one more create of execute queue. We have to attach the new execute queue to the current existing server.
    Can we set a new element (not a attribute) to the server by quering or any other method?
    Thanks.

    I haven't tried this with wlconfig, but I was able to accomplish it by invoking weblogic.Admin from the <java> task:
    <!-- Create the ExecuteQueue -->
    <java classname="weblogic.Admin" fork="true">
    <arg line="-url ${deploy.server.name}:${deploy.server.port}"/>
    <arg line="-username ${deploy.username}"/>
    <arg line="-password ${deploy.password}"/>
    <arg value="CREATE"/>
    <arg line="-mbean portal:Type=ExecuteQueue,Name=newRenderQueue,Server=${deploy.target}"/>
    <classpath>
    <pathelement location="${weblogic.home.dir}/server/lib/weblogic.jar"/>
    </classpath>
    </java>
    <!-- Set the ThreadCount -->
    <java classname="weblogic.Admin" fork="true">
    <arg line="-url ${deploy.server.name}:${deploy.server.port}"/>
    <arg line="-username ${deploy.username}"/>
    <arg line="-password ${deploy.password}"/>
    <arg value="SET"/>
    <arg line="-mbean portal:Type=ExecuteQueue,Name=newRenderQueue,Server=${deploy.target}"/>
    <arg line="-property ThreadCount 5"/>
    <classpath>
    <pathelement location="${weblogic.home.dir}/server/lib/weblogic.jar"/>
    </classpath>
    </java>
    Hope that helps,
    George

  • Ant Task through Web

    Hi,
    Is it possible to run a Ant Task from a web interface. What I want a nice little web interface with some buttons on it like Run JavaDoc, Deploy, Compile, Unit Test etc and when a developer clicks on any of the buttons, performs ANT Task.
    Any ideas?
    Thanks

    Take a look at antidote (or eclipse etc) and just port the Swing GUI. Shouldn't be too difficult.
    http://ant.apache.org/projects/antidote/

  • Mxmlc Ant Task Paths

    Hello,
    I'm trying to run the following mxmlc ant task from a relative path:
            <mxmlc
                file="flx/MyApp.mxml"
                output="web/MyApp.swf"
                context-root="MyApp"
                services="web/WEB-INF/flex/services-config.xml"
                compatibility-version="3">
                <source-path
                    path-element="flx"/>
            </mxmlc>
    If I run the task from within the MyApp directory it works fine, but I want to run it from a relative directory, eg:
            ant -f MyApp/build.xml
    or from an ant build file:
            <ant dir="MyApp"/>
    However, in both cases I just get the following error:
            [mxmlc] command line: Error: unable to open 'web/WEB-INF/flex/services-config.xml'
    I really need to use relative paths as it is running as a sub-project of a larger project via an ant build, and there is no concept of changing directories within ant.
    Does anybody know how I can get relative paths to works?
    Thanks

    Thanks. That's what I ended up doing in the end. I also added (prior to that)
    <property name="project.dir" value="."/>
    So that it can be run without manually specifying project.dir. (project.dir will only be set to . if it is not already set by an outer script).
    What I really wanted was for mxmlc to run relative to the ant task, eg.
    <ant dir="project"/>
    Then each task inside the ant build file should run relative to "project". This is how <javac/> works. I don't think Adobe like relative paths though.

  • Calling Ant Tasks on mulitple files

    Hello, I was wondering if this was possible in Ant. I have a directory with multiple sub-directories. In each of those subdiretories there is a build.xml Ant file. Each one of them has a Target that I run, called "build".
    Is it possible to create a main Ant Build file that will iterate through every build.xml file it finds in the sub-directories and call the target "build" on it? I couldn't find a way to do this. Thanks!

    Hi,
    I hope the following Script may help you
    build.xml
         |
         --dir
             |
             build.xml
             |
             dir1
                |
                build.xml
             |
             dir2
                |
                build.xml
    The master build.xml may call the build.xml which is commmon to all sub-directories
    <project>
      <target name="Master build" description="The master build" >
        <ant antfile="/dir/build.xml" target="build_directories" />
      </target>
    </project>
    "dir" directory may have a common build.xml which call the build.xml of each and every subdirectory.
    <?xml version="1.0" encoding="UTF-8"?>
    <project default="build_dir">
         <target name="build_directories" description="Builds sub directories" >
              <subant>
                   <fileset dir="../dir">
                             <include name="*/build.xml" />
                   </fileset>
              </subant>
        </target>     
    </project>
    subdir1 and subdir2 may have each and own copy of build.xml.
    <?xml version="1.0" encoding="UTF-8"?>
    <project default="make">
    <target name="Common-build" description="Build Common jar">
         <jar destfile="test1.jar" basedir="." />
    </target>
    </project>Please let me know if you've any queries/suggestions
    Cheers,
    Ajaykumar.sr

  • Can i reference external flex-config in flexunit ant task?

    flexunit gurus,
    i'm trying to figure out how to best specify the compiler arguments for the flexunit ant task in flexunit 4.1 beta 1.  from the documentation i see this sample flexunit usage:
    <flexunit workingDir="${bin.loc}" toDir="${report.loc}"
    haltonfailure="false" verbose="true" localTrusted="true">
    <testSource dir="${main.src.loc}" />
    <testSource dir="${test.src.loc}">
    <include name="**/*Test.as" />
    </testSource>
    <library dir="${lib.loc}" />
    </flexunit>
    in this example, the source and library paths are explicitly listed.  in this simple example all the needed libraries reside within a single directory.
    when i build my application, i use a custom flex-config.xml file, as the following snippet shows:
            <mxmlc file="${application.file}" output="${swf.debug.file}" debug="true" headless-server="${headless.server}">
                <load-config filename="${flex.config.file}" />
            </mxmlc>
    in that custom flex-config.xml file i list all the build options (e.g. source dirs, library paths, theme, etc.) appropriate for building the application.  the libraries i reference are in a number of different directories (in general each 3rd party library is in a different directory).
    in the flexunit task, i could individually reference all the same libraries that are in the flex-config.xml, but that'd be a pain to keep them in sync.  i suppose i also could parse the flex-config.xml to extract the library information and use that to populate the library argument.  really what i want to say in the flexunit task is "build all source and tests as indicated in flex-config.xml, then run the tests", perhaps with a syntax like the following:
    <flexunit workingDir="${bin.loc}"  toDir="${report.loc}"
    haltonfailure="false" verbose="true" localTrusted="true">
                <load-config filename="${flex.config.file}" />
    <testSource dir="${test.src.loc}">
    <include name="**/*Test.as" />
    </testSource>
    <library dir="${flexunit.lib}" />
    </flexunit>
    i'd rather keep the flex-config.xml file free of any test specific information, so ideally i'd specify the path to the flexunit swc's and the test path in the flexunit task (as in the above example).
    is there support for such usage currently or planned for in the future?  recommendations on how best to accomplish my goal of not duplicating library information already present in a custom flex-config.xml?
    thanks.
    -mike

    hi brian,
    thanks for your response.
    i understand the desire to avoid re-implementing the flex sdk ant tasks.  i'm not sure that can reasonably be accomplished wihen the TestRunner is dynamically generated from within the flexunit task.  in addition to the source path and library path, the theme setting and namespaces settings can affect successful compilation, and the runtime-shared-library-path setting can affect whether the produced swf runs correctly.
    perhaps there's an alternative.  what if we separate the creation of the TestRunner.mxml from the compilation and the execution of the tests.  if flexunit offers an ant task that can produce (but not run) a TestRunner.mxml, i can write the mxmlc task that compiles it properly, and then i can invoke the old style flexunit specifying the swf argument.  this would still accomplish my primary goal of not needing to manually enumerate every test file in a TestRunner.mxml that i have to maintain (and which neither Flash Builder nor maven builds require).  to compile the TestRunner.mxml, i'd load in my custom flex-config.xml, then append to the source path and library path to include my test directory and flexunit libraries.
    maybe something like the following to create the TestRunner:
    <generatetestrunner output="${bin.loc}/TestRunner.mxml">
              <testSource dir="${test.dir}">
                 <include name="**/*Test.as" />
              </testSource>
    </generatetestrunner>
    thoughts?
    one other thing i noticed about the current library argument to flexunit is that it assumes a directory even if you provide an explicit path to an swc (i tried switching <library dir...> to <library file...> but that didn't seem to make a difference).  in my case, there are specific swc's i need in the library path, and the task assuming i mean a directory when i specify an explicit swc is problematic.  the directory my swc libraries are contained in sometimes contain multiple and conflicting versions of a library (each library directory contains various snapshot builds of the library).  i need a way to explicitly indicate which library to use.
    finally, could you point me to the java source for the flexunit ant tasks?  i've found the flexunit action script source ok but haven't found where the java ant task is defined.
    thanks.
    -mike

  • Does compiling an advanced datagrid using flex ant task require additional config other than the license property?

    Hi,
        I am trying to build my Flex app which uses the Advanced Data Grid in a couple of locations. Originally, when I built the app using the flex ant tasks, I noticed the Visualization Trial watermark show up on the screen. I then added the license tag with the serial number to my flex-config.xml and re-ran my ant build. The watermark goes away, but then when I look at the advanced datagrid, the datagrid shows up with the hierarchy, but the data does not display in the grid (only the group by nodes are visible, not the data for the leaf elements). This works fine when I build the app using my Flex Builder. Is there something I am missing or need to add to my flex ant task to make this work?
    Any help or guidance is much appreciated.
    The following is the ant task to build the module that uses the ADG:
        <target name="compile-modules" depends="compile-shared">
            <!-- Module 1 -->
            <echo>Compiling module 1...</echo>
            <mxmlc file="${modulesrc.dir}\ui\modules\mod1\Module1.mxml"
                    output="${dist.dir}\modules\mod1\Module1.swf"
                    actionscript-file-encoding="UTF-8"
                    incremental="true"
                    default-background-color="0xFFFFFF"
                    use-network="false"
                    load-externs="${extern-report-xml}">
                <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />
                <source-path path-element="${FLEX_HOME}/frameworks"/>
                <!-- source paths -->
                <compiler.source-path path-element="${modulesrc.dir}"/>
                <!-- add external libraries -->
                <compiler.library-path dir="${main.dir}" append="true">
                    <include name="${lib.dir}"/>
                </compiler.library-path>
                <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                    <include name="libs" />
                    <include name="locale/{locale}" />
                </compiler.library-path>
                <compiler.debug>true</compiler.debug>
            </mxmlc>
        </target>
    And here is the ant task for the main application:
        <target name="compile-ui" depends="compile-modules">
            <mxmlc file="${src.dir}/MainApp.mxml" output="${dist.dir}/MainApp.swf"
                    actionscript-file-encoding="UTF-8" keep-generated-actionscript="false"
                    fork="true" maxmemory="1024m">
                <jvmarg value="-XX:MaxPermSize=256m"/>
                <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
                <source-path path-element="${FLEX_HOME}/frameworks"/>
                <source-path path-element="${src.dir}"/>
                <source-path path-element="${main.dir}/locale/{locale}"/>
                <!-- List of SWC files or directories that contain SWC files. -->
                <!--<compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                    <include name="libs" />
                    <include name="locale/{locale}" />
                </compiler.library-path>-->
                <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true">
                    <include name="libs/datavisualization.swc" />
                    <include name="libs/flex.swc" />
                    <include name="libs/framework.swc" />
                    <include name="libs/rpc.swc" />
                    <include name="libs/utilities.swc" />
                    <include name="locale/{locale}" />
                </compiler.library-path>
                <compiler.library-path dir="${main.dir}" append="true">
                    <include name="${lib.dir}"/>
                </compiler.library-path>
                <runtime-shared-library-path path-element="${FLEX_FRAMEWORK}/framework.swc">
                    <url rsl-url="framework_3.2.0.3958.swf"/>
                    <url rsl-url="framework_3.2.0.3958.swz"/>
                </runtime-shared-library-path>
                <compiler.debug>true</compiler.debug>
            </mxmlc>
        </target>
    Regards,
    Purush

    to remove watermark i have added license key in WEB-INF\flex\license.properties file as key = value

  • Compc ant task and external framework

    I'm writing an ant task to compile a couple of libraries into
    SWCs and then a shell app (that uses the libraries) into a SWF for
    deployment. If I compile the libraries by hand then run just the
    'mxmlc' part of my ant script it compiles fine. However when I try
    and first compile a library into a SWC with 'compc' it compiles but
    then the shell app complains that the classes from the library are
    missing. One thing that may be causing the problem is my library
    path (through flex builder) has it's framework.swc set to 'Link
    Type: External' and I'm not sure how to define that with 'compc'.
    The weird thing is the flex builder compiled and 'compc' compiled
    SWCs are the same size. Here's my target for 'compc':

        <mxmlc
             file="${project.name}/src/Test.mxml"
             output="${build.mxmlc.dir}/Test.swf"
             static-link-runtime-shared-libraries="true"
        >
              <load-config filename="${air.config}"/>
              <source-path path-element="${project.name}/src" />
             <runtime-shared-library-path path-element="${flex.frameworks.dir}/libs/framework.swc">
                    <url rsl-url="${rsl.dir}/framework_3.2.0.3958.swz"/>
                    <url rsl-url="${rsl.dir}/framework_3.2.0.3958.swf"/>
             </runtime-shared-library-path>
             <runtime-shared-library-path path-element="${flex.frameworks.dir}/libs/datavisualization.swc">
                    <url rsl-url="${rsl.dir}/datavisualization_3.2.0.3958.swf"/>
             </runtime-shared-library-path>
        </mxmlc>
    This also seems to work. AIR libraries are included in my output SWF. It all happens right when I have static-link-runtime-shared-libraries="true" . Why? Why does that not work when i have static-link-runtime-shared-libraries="false"  ??

  • Flexunit 4.1 beta 1 ant task fails if SDK or project dir contains spaces

    downloaded FlexUnit 4.1 beta 1 for its directory scanning and test loading support.  found a problem - if either the SDK dir (e.g. C:\Program Files\Adobe\Adobe Flash Builder 4\sdks\4.0.0) or the project dir (e.g. C:\Documents and Settings\flexuser\My Documents\mike\Adobe Flash Builder 4\AntFlexUnit4.1betaSampleCIProject) contain spaces, the flexunit ant task will fail, as the following output indicates:
    <snip>
    [flexunit] '+flexlib'
    [flexunit] 'C:\Program'
    [flexunit] 'Files\Adobe\Adobe'
    [flexunit] 'Flash'
    [flexunit] 'Builder'
    [flexunit] '4\sdks\4.0.0\frameworks'
    [flexunit] '-output'
    [flexunit] 'C:\Documents'
    [flexunit] 'and'
    [flexunit] 'Settings\flexuser\My'
    [flexunit] 'Documents\mike\Adobe'
    [flexunit] 'Flash'
    [flexunit] 'Builder'
    [flexunit] '4\AntFlexUnit4.1betaSampleCIProject\target\bin\TestRunner.swf'
    <snip>
    BUILD FAILED
    C:\Documents and Settings\flexuser\My Documents\mike\Adobe Flash Builder 4\AntFlex
    Unit4.1betaSampleCIProject\build.xml:72: Compilation failed:
    command line: Error: default arguments may not be interspersed with other options
    everything worked fine if i relocated both the SDK and project dir.  unfortunately most of our developers use SDK and project directories with spaces.
    what's the ETA for beta 2 ;-) ?  anxious to integrate this excellent new feature once the spacing problem is resolved.
    thanks.
    -mike

    @mike - Ok I've updated my fork @ http://github.com/blegros/flexunit with the fix.  If you don't want to build from source, you can download the flexunit.zip file from my fork and just pull the Ant task out to use temporarily.  You can find the artifact from my fork's build @ http://flexunit.digitalprimates.net:8080/view/Contributors/job/blegros/lastSuccessfulBuild /artifact/flexunit.zip.
    Let me know if this works out for you.
    -Brian

  • Meta migration ant task throw exception

    Hi,
    I am trying the migration from kodo 2 to 3.
    I successfully migrated the properties file using the integrated ant
    task; but run into some problem with the meta data migration (the *.jdo
    files). following is the ant task I am using:
    <target name="migrate-meta" depends="init, prepare-jdo-meta, compile" >
    <!-- define the kodo2migrator task; this can be done at the top
    of -->
    <!-- the build.xml file, so it will be available for all
    targets -->
    <taskdef name="kodo2migrator"
    classname="kodo.jdbc.ant.Kodo2MigratorTask">
    <classpath>
    <pathelement
    path="${java.class.path}:${project.classpath}:${project.build.jdometa.dtd}"/>
    </classpath>
    </taskdef>
    <!-- invoke migrator on all .jdo files below the src directory -->
    <kodo2migrator>
    <classpath>
    <pathelement
    path="${java.class.path}:${project.classpath}:${project.build.jdometa.dtd}"/>
    </classpath>
    <fileset dir="${project.kodo.src}">
    <include name="**/*.jdo" />
    </fileset>
    <config properties="${jdo.properties}" />
    </kodo2migrator>
    </target>
    the exception it is throwning is :
    [kodo2migrator] kodo.jdbc.migration.kodo2.util.FatalUserException: The
    specified driver class "null" is neither a java.sql.Driver nor a
    javax.sql.DataSource. Please specify a valid driver in the
    javax.jdo.option.ConnectionDriverName property.
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.schema.ConfigurationConnector.createConnectionFactory(ConfigurationConnector.java:108)
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.schema.ConfigurationConnector.<init>(ConfigurationConnector.java:65)
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.schema.ConfigurationConnector.<init>(ConfigurationConnector.java:57)
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.schema.ConfigurationConnector.<init>(ConfigurationConnector.java:37)
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.Kodo2Migrator.migrate(Kodo2Migrator.java:161)
    [kodo2migrator] at
    kodo.jdbc.migration.kodo2.Kodo2Migrator.run(Kodo2Migrator.java:1141)
    [kodo2migrator] at
    kodo.jdbc.ant.Kodo2MigratorTask.executeOn(Kodo2MigratorTask.java:53)
    [kodo2migrator] at
    com.solarmetric.ant.TaskBase.execute(TaskBase.java:105)
    [kodo2migrator] at
    org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:193)
    [kodo2migrator] at org.apache.tools.ant.Task.perform(Task.java:341)
    [kodo2migrator] at
    org.apache.tools.ant.Target.execute(Target.java:309)
    [kodo2migrator] at
    org.apache.tools.ant.Target.performTasks(Target.java:336)
    [kodo2migrator] at
    org.apache.tools.ant.Project.executeTarget(Project.java:1339)
    [kodo2migrator] at
    org.apache.tools.ant.Project.executeTargets(Project.java:1255)
    [kodo2migrator] at org.apache.tools.ant.Main.runBuild(Main.java:609)
    [kodo2migrator] at org.apache.tools.ant.Main.start(Main.java:196)
    [kodo2migrator] at org.apache.tools.ant.Main.main(Main.java:235)
    BUILD FAILED
    file:/home/tyang/eclipse/workspace/UMA/build.xml:208:
    kodo.jdbc.migration.kodo2.util.FatalUserException: The specified driver
    class "null" is neither a java.sql.Driver nor a javax.sql.DataSource.
    Please specify a valid driver in the
    javax.jdo.option.ConnectionDriverName property.
    the properties file I am using is like this: (just a snipet)
    javax.jdo.PersistenceManagerFactoryClass:
    kodo.jdbc.runtime.JDBCPersistenceManagerFactory
    javax.jdo.option.ConnectionDriverName: org.postgresql.Driver
    javax.jdo.option.ConnectionURL: jdbc:postgresql://127.0.0.1/cwdevdb
    javax.jdo.option.ConnectionUserName: cwdev
    javax.jdo.option.ConnectionPassword:
    javax.jdo.option.DefaultFetchBatchSize: 10
    javax.jdo.option.DefaultFetchThreshold: 30
    javax.jdo.option.IgnoreCache: true
    javax.jdo.option.NontransactionalRead: true
    javax.jdo.option.NontransactionalWrite: false
    javax.jdo.option.Optimistic: true
    javax.jdo.option.RestoreValues: false
    javax.jdo.option.RetainValues: false
    kodo.ConnectionFactoryProperties: MaxActive=20, MaxWait=5000
    kodo.ConnectionRetainMode: persistence-manager
    kodo.DataCache: true(CacheSize=10000)
    kodo.LicenseKey: xxxx-xxxx-xxxx-xxxx-xxxx
    kodo.ManagedRuntime: TransactionManagerName=java:/TransactionManager
    kodo.PersistenceManagerImpl: CloseOnManagedCommit=true
    kodo.QueryCache: true
    kodo.RemoteCommitProvider: sjvm(Topic=topic/KodoCacheTopic)
    kodo.jdbc.DBDictionary: postgres(StoreCharsAsNumbers=false)
    kodo.jdbc.SequenceFactory: PrimaryKeyColumn=PKX,
    SequenceColumn=SEQUENCEX, TableName=JDO_SEQUENCEX
    To make sure this IS the one it is using, not only I echo out the
    "${jdo.properties}" value, but also I tried to comment out the
    licenseKey line, then it threw "license key invalid" exception. so I am
    sure this is the properties file I am using in that ant task.
    Also I tried using the command line on one of our classes, it does not
    run into this problem.
    Any clue what I am missing?
    Thanks a lot,
    Tao

    The 3.0.0 migrator task has a couple of bugs. These will be ironed out
    in 3.0.1, which is due for release any day now. But if you must work
    around the bugs immediately, you'll have to:
    1. Run the task using your old properties file. Actually this will be a
    requirement even in 3.0.1; that's why in the migration chapter of the
    docs we say to migrate your metadata before your properties. The
    migration tool needs to access 2.5 properties to map your classes properly.
    2. Add the the following property to your old properties file:
    kodo.LicenseKey: <your license key>
    3. Name the properties file "kodo.properties" and place it in one of the
    directories listed in the ant task's CLASSPATH. If that doesn't work,
    place it in a directory in your system CLASSPATH. The 3.0.0 task has
    some classpath problems, and also the <config> task element doesn't work.
    Or, you could just set your system CLASSPATH and run the kodo2migrator
    tool from the command line.
    I hope this helps. As I said, 3.0.1 resolves these ant problems, and
    will be released very shortly.

  • Passing extra compiler options to flexunit ANT task?

    Hi,
    Is there a way to send any extra compiler options to the <flexunit> ANT task?
    I'm using conditional compilation and compilation (mxmlc) is failing from the <flexunit> task:
    "Error: Access of undefined property DEBUG.
    CONFIG::DEBUG {"
    I tried sneaking "-define+=CONFIG::DEBUG,false" in with one of the other compiler options you can set on the <flexunit> task, but that just doesn't work or results in a validation error like this:
    "One of the directories specified as a 'testSource' element does not exist."
    Let me know if this is possible at all.
    Thanks,
    Wijnand

    Hi Brian,
    legrosb wrote:
    @Wijnand - Sorry for the belated response.
    Not late at all! I think a response within a day on a forum is quite fast!
    legrosb wrote:
    I thought I had captured this on the wiki, but it looks like I haven't, so thank you for the heads up.
    I'll also update the wiki @ http://docs.flexunit.org/index.php?title=Ant_Task to be more detailed regarding compilation so other don't have to dig. 
    Did you just do an update on that Wiki page or did I completely miss the part that explained the <flexunit> parameters?
    legrosb wrote:
    In 4.2, which is super pre-alpha right now, I've added support to accept a series of flex-config.xml files provided by the user.  Not sure if conditional compilation can be tackled with a custom flex-config.xml file, but if so then that'd be the feature that may help you.
    Yes, being able to add (+=) a custom config file will solve this problem for me. You can define properties and values like this:
    <flex-config>
        <compiler>
            <define>
                <name>CONFIG::DEBUG</name>
                <value>false</value>
            </define>
        </compiler>
    <flex-config>
    So in your AS code you can use:
    CONFIG::DEBUG {
        // Do something that only should be done in debug mode.
    I have another question, I ran into this one during testing my SWF with flexunit.
    unittest.xml:82: java.util.concurrent.ExecutionException: command [<testcase classname='com.tuenti.video.unittest.testcase.player::MockPlayerCase' name='loadPlayer' time='0.000'  status='success'/>] not understood
    I had a look at the FlexUnitSocketThread.parseInboundMessages method that throws this error and it looks like that your defined END_OF_SUCCESS doesn't entirely match what the SWF is spitting out. They are of by 1 space: END_OF_SUCCESS is defined as: "status=\"success\" />", whereas my SWF spits out the following: "status='success'/>" (single quotes and no space before the closing of the tag).
    It looks like I'm not the only one with the ExecutionException as it is reported on StackOverflow as well: http://stackoverflow.com/questions/3953677/flexunittasks-error-of-command-not-understood
    Cheers,
    Wijnand

  • Building from flex builder vs ant task

    I have a flex application written using flex builder. When I
    build it and run it using flex builder, or create an air file from
    flex builder and run that, then my application works just fine.
    However, I would like people without copies of flexBuilder
    installed to be able to build my application, so I am using the
    flex ant task (flex-mxmlc) to build my application. As far as I can
    tell I have the same configuration, and the same libraries included
    in the ant task. However, when I run the air file generated by the
    ant task nothing happens. If you look in the task manager, you can
    see that the application is running, but the main window for the
    application never appears.
    I tried running the swf through a debug version of flash to
    get some log output, and I am getting a bunch of exceptions, the
    first of which is:
    VerifyError: Error #1014: Class flash.display::NativeWindow
    could not be found.
    at flash.display::MovieClip/nextFrame()
    at mx.managers::SystemManager/deferredNextFrame()
    at
    mx.managers::SystemManager/preloader_initProgressHandler()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.preloaders::Preloader/timerHandler()
    at flash.utils::Timer/_timerDispatch()
    at flash.utils::Timer/tick()
    It seems like it might not be finding the main flex library
    (flexlib.swc), is that where that class would be? In my ant task I
    have an include-libraries tag that points to that file.
    Anyone have any ideas?

    I experienced a similar problem (although the class that
    could not be found was different for me). Googling around I found
    someone who had a similar problem and claimed that using the
    flexlib.swc library was the culprit.
    The root of the problem is that the Flex SDK that comes
    bundled with the Flex Builder has libraries (under frameworks/libs)
    that are NOT included in plain free Flex SDK that you and I are
    presumably using on our build machines.
    When flexlib.swc is linked in, it causes certain classes to
    be required at runtime. Apparently when you compile these classes
    are linked in if available, but when they are not the compilation
    still succeeds. Only you get a VerifyError when you run the thing.
    What worked for me was to copy all the additional .swc files
    found in my Flex Builder SDK's frameworks/libs directory to the
    same directory on my build machine. Also you will need to copy the
    additional files under frameworks/locale/en_US.
    Rebuild and clear your browser's cache and it should then
    work.

Maybe you are looking for