0

For the past two days, I've been trying to get get FlexUnit, FlexMojos, and Mockolate to work together so that I can run tests in TeamCity, but I have not been having any luck.

I have one project on Teamcity currently that uses FlexMojos and the FlexMojos-flexunit that works, however that project is not using Mockolate.

The pom for that project looks like this:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>CENSOREDt</groupId>
<artifactId>CENSORED</artifactId>
<version>CENSORED</version>
<name>CENSORED</name>

<packaging>swc</packaging>

<properties>
    <flex.version>4.1.0.16248</flex.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.language>flex</sonar.language>
    <sonar.dynamicanalysis>false</sonar.dynamicanalysis>
</properties>

<dependencies>
    <dependency>
    CENSORED
    <dependency>
        <groupId>org.puremvc.as3</groupId>
        <artifactId>PureMVC_AS3</artifactId>
        <version>2.0.4</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>com.adobe</groupId>
        <artifactId>componentsFlashIDE</artifactId>
        <type>swc</type>
        <version>0.0.1</version>
    </dependency>
    <dependency>
        <groupId>fl</groupId>
        <artifactId>components</artifactId>
        <version>1.0</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>com.greensock</groupId>
        <artifactId>greensock</artifactId>
        <version>v11</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>caurina.transitions</groupId>
        <artifactId>Tweener</artifactId>
        <version>1.2</version>
        <type>swc</type>
    </dependency>
    <!-- test-scope dependencies: -->
    <dependency>
        <groupId>org.sonatype.flexmojos</groupId>
        <artifactId>flexmojos-unittest-flexunit4</artifactId>
        <version>4.1-beta</version>
        <type>swc</type>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>com.adobe.flex.framework</groupId>
                <artifactId>playerglobal</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.adobe.flex.framework</groupId>
                <artifactId>airframework</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-as3</artifactId>
        <version>1.1</version>
        <type>swc</type>
        <scope>test</scope>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>artifactory-libs</id>
        <name>artifactory-libs-release</name>
        <url>http://artifactory/artifactory/libs-release-local</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-snapshots</id>
        <name>artifactory-libs-snapshots</name>
        <url>http://artifactory/artifactory/libs-snapshot-local</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-ext</id>
        <name>artifactory-ext-release</name>
        <url>http://artifactory/artifactory/ext-release-local</url>
    </repository>
    <repository>
        <id>flex-mojos-repository</id>
        <name>flex-mojos-repository</name>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>flex-mojos-plugin-repository</id>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </pluginRepository>
    <pluginRepository>
        <id>flexpmd.opensource.adobe</id>
        <name>FlexPMD repository on opensource.adobe.com</name>
        <url>http://opensource.adobe.com/svn/opensource/flexpmd/maven-repository/release/</url>
    </pluginRepository>
</pluginRepositories>

<distributionManagement>
    <repository>
        <id>artifactory</id>
        <name>artifactory-releases</name>
        <url>http://artifactory/artifactory/libs-release-local</url>
    </repository>
    <snapshotRepository>
        <id>artifactory</id>
        <name>artifactory-snapshots</name>
        <url>http://artifactory/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>

<build>
    <finalName>${project.artifactId}</finalName>
    <testSourceDirectory>test</testSourceDirectory>
    <sourceDirectory>src/</sourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.sonatype.flexmojos</groupId>
            <artifactId>flexmojos-maven-plugin</artifactId>
            <version>4.0-RC2</version>
            <extensions>true</extensions>

            <dependencies>
                <dependency>
                    <groupId>com.adobe.flex</groupId>
                    <artifactId>compiler</artifactId>
                    <version>${flex.version}</version>
                    <type>pom</type>
                </dependency>
            </dependencies>
            <configuration>
                <storepass/>
                <targetPlayer>10.1</targetPlayer>
                <compilerWarnings>
                    <warn-no-constructor>false</warn-no-constructor>
                </compilerWarnings>
            </configuration>
        </plugin>
    </plugins>
</build>

<reporting>
</reporting>

It works fine. When I add a reference to Mockolate however, the build fails because of some sort of conflicting classes in FlexUnit.

I read on this link here that I need to remove the reference to flexMojos-flexunit and give my own reference to FlexUnit4 in the pom. I did that. However now I get an error reading:

Failed to execute goal org.sonatype.flexmojos:flexmojos-maven-plugin:4.0-RC2:test-compile (default-test-compile) on project slots_client_common: java.lang.reflect.InvocationTargetException: Not found any compatible unit test framework

My current POM which is NOT working looks like this:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.CENSORED.client</groupId>

<artifactId>CENSORED</artifactId>
<version>CENSORED</version>
<name>CENSORED</name>

<packaging>swc</packaging>

<properties>
    <flex.version>4.1.0.16248</flex.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <sonar.language>flex</sonar.language>
    <sonar.dynamicanalysis>false</sonar.dynamicanalysis>
</properties>

<dependencies>
    <dependency>
    CENSORED
    </dependency>
    <dependency>
        CENSORED
    </dependency>
    <dependency>
        <groupId>org.puremvc.as3</groupId>
        <artifactId>PureMVC_AS3</artifactId>
        <version>2.0.4</version>
        <type>swc</type>
    </dependency>
    <!-- test-scope dependencies: -->

    <dependency>
        <groupId>com.adobe.felxunit</groupId>
        <artifactId>flexunit</artifactId>
        <version>4.1.0-8</version>
        <classifier>as3</classifier>
        <type>swc</type>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>com.adobe.flex.framework</groupId>
                <artifactId>playerglobal</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.adobe.flex.framework</groupId>
                <artifactId>airframework</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-as3</artifactId>
        <version>1.1</version>
        <type>swc</type>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockolate</groupId>
        <artifactId>mockolate</artifactId>
        <version>0.12.4</version>
        <classifier>as3</classifier>
        <type>swc</type>
        <scope>test</scope>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>artifactory-libs</id>
        <name>artifactory-libs-release</name>
        <url>http://artifactory/artifactory/libs-release-local</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-snapshots</id>
        <name>artifactory-libs-snapshots</name>
        <url>http://artifactory/artifactory/libs-snapshot-local</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-ext</id>
        <name>artifactory-ext-release</name>
        <url>http://artifactory/artifactory/ext-release-local</url>
    </repository>
    <repository>
        <id>flex-mojos-repository</id>
        <name>flex-mojos-repository</name>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </repository>

</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>flex-mojos-plugin-repository</id>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </pluginRepository>
    <pluginRepository>
        <id>flexpmd.opensource.adobe</id>
        <name>FlexPMD repository on opensource.adobe.com</name>
        <url>http://opensource.adobe.com/svn/opensource/flexpmd/maven-repository/release/</url>
    </pluginRepository>
</pluginRepositories>


<distributionManagement>
    <repository>
        <id>artifactory</id>
        <name>artifactory-releases</name>
        <url>http://artifactory/artifactory/libs-release-local</url>
    </repository>
    <snapshotRepository>
        <id>artifactory</id>
        <name>artifactory-snapshots</name>
        <url>http://artifactory/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>


<build>
    <finalName>${project.artifactId}</finalName>
    <testSourceDirectory>tests</testSourceDirectory>
    <sourceDirectory>src/</sourceDirectory>
    <plugins>
        <plugin>
            <groupId>org.sonatype.flexmojos</groupId>
            <artifactId>flexmojos-maven-plugin</artifactId>
            <version>4.0-RC2</version>
            <extensions>true</extensions>

            <dependencies>
                <dependency>
                    <groupId>com.adobe.flex</groupId>
                    <artifactId>compiler</artifactId>
                    <version>${flex.version}</version>
                    <type>pom</type>
                </dependency>
            </dependencies>
            <configuration>
                <targetPlayer>10.1</targetPlayer>
                <compilerWarnings>
                    <warn-no-constructor>false</warn-no-constructor>
                </compilerWarnings>
                <storepass/>
            </configuration>
        </plugin>
    </plugins>
</build>

The FlexUnit4 swc exists in my artifactory, and IntelliJ gives me no warnings or errors in the Maven before trying to build.

Thanks for any help.

Bob
  • 1,605
  • 2
  • 18
  • 33
  • Also it seems that flexmojos.net doesn't work anymore? anyone know it's new home? – Bob Aug 29 '13 at 08:40
  • Unfortunately Velo never made sure the old Flexmojos stuff at Sonatype got deleted. The new Jira/Coonfluence etc. is at https://flexmojos.atlassian.net/wiki/display/FLEXMOJOS/Home – Christofer Dutz Sep 09 '13 at 12:47
  • We did discuss this issue on the Apache Flex mailinglist ... did you solve your problem? If yes, it would be great if you could anster your question here and share the knowledge :-) – Christofer Dutz Sep 09 '13 at 12:48
  • Yeah, thanks for reminding me. I will do so, when I have the chance. Though I'd rather give you the credit, since it was your help that got me what I needed. – Bob Sep 09 '13 at 13:03
  • Don't wory about the credits ... after all I don't quite remember which of my suggestions helped you ... so I'm quite fine with you writing the solution and accepting it. Just want some FM related questions being closed here ;-) – Christofer Dutz Sep 09 '13 at 13:05
  • It was the basic pom, and making it a super pom which gets imported by the project. – Bob Sep 09 '13 at 13:10

1 Answers1

0

Thanks to some great folks over at the Apache Flex dev forum (Frédéric THOMAS and @chrisdutz ) I was able to get the answer to my question:

First, you need to mavenize the SDK you want to use, in my case that was Flex SDK 4.1A

Then, you can set up your pom like this:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>testMaven</groupId>
<artifactId>testMaven</artifactId>
<version>1.0-SNAPSHOT</version>

<packaging>swf</packaging>

<properties>
    <flexmojos.version>6.0.1</flexmojos.version>
    <flex.version>4.1.0.16076A</flex.version>
    <playerglobal.version>10.1</playerglobal.version>
    <flashplayer.version>10.1</flashplayer.version>
    <flex.debug>true</flex.debug>
</properties>

<build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>tests</testSourceDirectory>
    <plugins>
        <plugin>
            <groupId>net.flexmojos.oss</groupId>
            <artifactId>flexmojos-maven-plugin</artifactId>
            <version>${flexmojos.version}</version>
            <extensions>true</extensions>
            <configuration>
                <storepass/>
                <targetPlayer>10.1</targetPlayer>
                <debug>${flex.debug}</debug>
                <defines>
                    <property>
                        <name>CONFIG::debugging</name>
                        <value>${flex.debug}</value>
                    </property>
                   <property>
                        <name>CONFIG::versionNumber</name>
                        <value>'${project.version}'</value>
                    </property>
                </defines>
                <sourceFile>com/myCompany/main/HelloWorld.as</sourceFile>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>com.adobe.flex</groupId>
                    <artifactId>compiler</artifactId>
                    <version>${flex.version}</version>
                    <type>pom</type>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>com.adobe.flex.framework.themes</groupId>
        <artifactId>halo</artifactId>
        <version>${flex.version}</version>
        <scope>theme</scope>
        <type>swc</type>
    </dependency>

    <dependency>
        <groupId>com.adobe.flash.framework</groupId>
        <artifactId>playerglobal</artifactId>
        <version>${playerglobal.version}</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>com.adobe.flash.framework</groupId>
        <artifactId>playerglobal</artifactId>
        <version>${playerglobal.version}</version>
        <type>rb.swc</type>
    </dependency>
    <dependency>
        <groupId>com.adobe.flex.framework</groupId>
        <artifactId>flash-integration</artifactId>
        <version>${flex.version}</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>com.adobe.flex.framework</groupId>
        <artifactId>flex-framework</artifactId>
        <version>${flex.version}</version>
        <type>pom</type>
    </dependency>
   <dependency>
        <groupId>com.adobe.flex.framework</groupId>
        <artifactId>flash-integration</artifactId>
        <version>${flex.version}</version>
        <type>rb.swc</type>
    </dependency>
    <dependency>
        <groupId>org.flexunit</groupId>
        <artifactId>flexunit</artifactId>
        <version>4.1.0</version>
        <classifier>as3</classifier>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-as3</artifactId>
        <version>1.1</version>
        <type>swc</type>
    </dependency>
    <dependency>
        <groupId>org.mockolate</groupId>
        <artifactId>mockolate</artifactId>
        <version>0.12.4</version>
        <classifier>as3</classifier>
        <type>swc</type>
    </dependency>
</dependencies>
<repositories>
    <repository>
        <id>artifactory-libs</id>
        <name>artifactory-libs-release</name>
        <url>http://artifactory/artifactory/libs-release-local</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-snapshots</id>
        <name>artifactory-libs-snapshots</name>
        <url>http://artifactory/artifactory/libs-snapshot-local</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>artifactory-ext</id>
        <name>artifactory-ext-release</name>
        <url>http://artifactory/artifactory/ext-release-local</url>
    </repository>
    <repository>
        <id>flex-mojos-repository</id>
        <name>flex-mojos-repository</name>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>flex-mojos-plugin-repository</id>
        <url>http://repository.sonatype.org/content/groups/flexgroup</url>
    </pluginRepository>
    <pluginRepository>
        <id>flexpmd.opensource.adobe</id>
        <name>FlexPMD repository on opensource.adobe.com</name>
        <url>http://opensource.adobe.com/svn/opensource/flexpmd/maven-repository/release/</url>
    </pluginRepository>
</pluginRepositories>

Bob
  • 1,605
  • 2
  • 18
  • 33
  • @chrisdutz Thank you again for helping me with this, and for your work on flexmojos in general. – Bob Sep 10 '13 at 08:17
  • 1
    One thing I would like to point out (Because it looks so similar that I overread it myself several times): Air and Flash artifacts are no longer generated to the groupId com.adobe.flex.framework because they are actually not part of flex. You have to be sure the groupId of the playerglobal is com.adobe.flash.framework. Additionally you no longer import playerglobal with the version of the fdk and specify the flashplayer version using a classifier, but specify the version of the playerglobal directly so it should allways match the "flashplayer.version". – Christofer Dutz Sep 10 '13 at 13:29