Flex Maven 项目:无法将 <mx:Application> 解析为组件实现
Flex Maven project: Could not resolve <mx:Application> to a component implementation
在使用 IntelliJ IDEA 将现有的 flex 项目转换为 maven 项目时,这几天我遇到了一个有趣的问题:
问题描述:
当我将模块依赖项用作 Flex SDK 3.2.0 时,我能够在 mxml 文件中正确地看到 'mx:Application' 标记,并且其中没有显示任何错误。但是,一旦我 select Flexmojos SDK 4.5/4.6,'mx:Application' 元素就会开始显示一条错误消息 'Element mx:Application must be declared'。此外,在编译期间,它给出错误提示 'Could not resolve mx:Application to a component implementation.' Refer this image with screenshots from IntelliJ IDEA.
分析:
我在 Whosebug 和其他 adobe 论坛上看到过类似的帖子,但他们的 none 解决方案很有帮助。我在 adobe 网站上检查过 Flex 4 是向后兼容的,因此理想情况下 mx:Application 标签应该可以工作,即使它在 Flex 4 中已被弃用。
现状:
由于我必须将这个普通的 Flex 项目转换为 Maven 项目,我必须只使用 Flexmojos-maven-plugin,因此我也必须使用其相关的最新 SDK 4.5/4.6。另外,我不打算在 Flex 4 中迁移整个 Flex 3 代码,因为工作量太大,而我目前的 objective 只是为了使用 maven 正确构建这个 flex 项目。
关于如何解决这个问题,你能给我一些想法吗?
我终于通过添加对以下依赖项的引用解决了这个问题:
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>mx</artifactId>
<version>4.5.0.19786</version>
<type>pom</type>
</dependency>
以上是我们公司内部的Nexus,但是我在网上的mvnrepository网站上找不到。
我还必须使用旧版本的 flexmojos-maven-plugin 来编译我的 flex 项目。这是完整的工作pom.xml供参考:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>TA_UI_Test2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>swf</packaging>
<name>TA_UI_Test2 Flex</name>
<dependencies>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>playerglobal</artifactId>
<version>10-3.3.0.4852</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>rpc</artifactId>
<version>4.5.1.21328</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>framework</artifactId>
<version>3.2.0.3958</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>mx</artifactId>
<version>4.5.0.19786</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.8</version>
<extensions>true</extensions>
<configuration>
<sourceFile>Main.mxml</sourceFile>
<debug>true</debug>
<storepass/>
</configuration>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>3.2.0.3958</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
在使用 IntelliJ IDEA 将现有的 flex 项目转换为 maven 项目时,这几天我遇到了一个有趣的问题:
问题描述:
当我将模块依赖项用作 Flex SDK 3.2.0 时,我能够在 mxml 文件中正确地看到 'mx:Application' 标记,并且其中没有显示任何错误。但是,一旦我 select Flexmojos SDK 4.5/4.6,'mx:Application' 元素就会开始显示一条错误消息 'Element mx:Application must be declared'。此外,在编译期间,它给出错误提示 'Could not resolve mx:Application to a component implementation.' Refer this image with screenshots from IntelliJ IDEA.
分析:
我在 Whosebug 和其他 adobe 论坛上看到过类似的帖子,但他们的 none 解决方案很有帮助。我在 adobe 网站上检查过 Flex 4 是向后兼容的,因此理想情况下 mx:Application 标签应该可以工作,即使它在 Flex 4 中已被弃用。
现状:
由于我必须将这个普通的 Flex 项目转换为 Maven 项目,我必须只使用 Flexmojos-maven-plugin,因此我也必须使用其相关的最新 SDK 4.5/4.6。另外,我不打算在 Flex 4 中迁移整个 Flex 3 代码,因为工作量太大,而我目前的 objective 只是为了使用 maven 正确构建这个 flex 项目。
关于如何解决这个问题,你能给我一些想法吗?
我终于通过添加对以下依赖项的引用解决了这个问题:
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>mx</artifactId>
<version>4.5.0.19786</version>
<type>pom</type>
</dependency>
以上是我们公司内部的Nexus,但是我在网上的mvnrepository网站上找不到。
我还必须使用旧版本的 flexmojos-maven-plugin 来编译我的 flex 项目。这是完整的工作pom.xml供参考:
<?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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>TA_UI_Test2</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>swf</packaging>
<name>TA_UI_Test2 Flex</name>
<dependencies>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>playerglobal</artifactId>
<version>10-3.3.0.4852</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>rpc</artifactId>
<version>4.5.1.21328</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>framework</artifactId>
<version>3.2.0.3958</version>
<type>swc</type>
</dependency>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>mx</artifactId>
<version>4.5.0.19786</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.8</version>
<extensions>true</extensions>
<configuration>
<sourceFile>Main.mxml</sourceFile>
<debug>true</debug>
<storepass/>
</configuration>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>3.2.0.3958</version>
<type>pom</type>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>