0

在使用 IntelliJ IDEA 将现有的 flex 项目转换为 maven 项目时,几天来我遇到了一个有趣的问题:

问题描述
当我使用模块依赖作为 Flex SDK 3.2.0 时,我能够在 mxml 文件中正确看到“mx:Application”标签,并且没有显示错误。但是,一旦我选择了 Flexmojos SDK 4.5/4.6,“mx:Application”元素就会开始显示一条错误消息,指出“必须声明元素 mx:Application”。此外,在编译期间,它会给出错误消息“无法将 mx:Application 解析为组件实现。” 请参考此图片以及来自 IntelliJ IDEA 的屏幕截图。

分析:
我在 StackOverflow 和其他 adobe 论坛上看到过类似的帖子,但他们的解决方案都没有帮助。我在 adobe 网站上检查了 Flex 4 是向后兼容的,因此理想情况下 mx:Application 标签应该可以工作,即使它在 Flex 4 中已被弃用。

当前情况:
由于我必须将这个普通的 Flex 项目转换为 Maven 项目,我只能使用 Flexmojos-maven-plugin,因此我也必须使用其相关的最新 SDK 4.5/4.6。另外,我不打算在 Flex 4 中迁移整个 Flex 3 代码,因为那工作量太大,而我目前的目标只是让这个 flex 项目使用 maven 正确构建。

你能给我关于如何解决这个问题的任何想法吗?

4

1 回答 1

0

我最终通过添加对以下依赖项的引用来解决这个问题:

<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>
于 2018-02-07T09:27:21.573 回答