使用ADT将SWF Flex文件打包到Adobe AIR应用程序中

问题描述

很长时间以来,我都在尝试修复它,但是所有选项都没有起作用,因此最终寻求帮助。让我解释一下这个问题。

  1. 10个不同且不相关的模块正在生成swf文件
  2. 一个模块中,我通过 maven-dependency-plugin 进入目标文件夹来处理这些swf文件。我还将air-descriptor文件和其他配置文件保留在src文件夹下。这些文件还将通过 maven-resources-plugin
  3. 复制到目标文件夹。
  4. 所以我要编写所需的POM文件

步骤1和2正常运行。因此,在1和2之后,所有必需文件都存在于target下。但是我在使用ADT生成AIR文件时遇到了很大的困难。我正在使用以下POM文件-

<?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.example.test</groupId>
    <artifactId>test-air-client</artifactId>
    <version>19.0.0_SP_03_SNAPSHOT</version>
    <packaging>air</packaging>
    <name>GUI Client</name>
    <properties>
        <application.name>GUIClient</application.name>
        <flex.framework.version>4.5.1.21328</flex.framework.version>
        <flexmojos.version>3.8</flexmojos.version>
        <keystore.file>${project.build.directory}/secret.p12</keystore.file>
        <keystore.password>secret</keystore.password>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.example.ria</groupId>
            <artifactId>example-ria-main-ui-swf</artifactId>
            <version>2020.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>air-framework</artifactId>
            <version>${flex.framework.version}</version>
            <type>pom</type>
        </dependency>

    </dependencies>

    
    <build>
    
        <sourceDirectory>${project.build.directory}</sourceDirectory>
        
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.8</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <artifactItems> 
                                <artifactItem>
                                  <groupId>com.example.ria</groupId>
                                  <artifactId>example-ria-main-ui-swf</artifactId>
                                  <version>2020.1-SNAPSHOT</version>
                                  <type>swf</type>
                                  <destFileName>main.swf</destFileName>
                                  <outputDirectory>${project.build.directory}</outputDirectory>
                                </artifactItem>
                                <!-- 9 other files are also copied like this -->
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 

            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <resources>          
                            <resource>
                                <directory>src/main/flex</directory>
                            </resource>
                            <resource>
                                <directory>src/main/resources</directory>
                            </resource>
                        </resources>              
                    </configuration>            
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
                <groupId>org.sonatype.flexmojos</groupId>
                <artifactId>flexmojos-maven-plugin</artifactId>
                <version>${flexmojos.version}</version>
                <extensions>true</extensions>

                <dependencies>
                    
                    <!--
                    <dependency>
                        <groupId>com.adobe.flex</groupId>
                        <artifactId>compiler</artifactId>
                        <version>${flex.framework.version}</version>
                        <type>pom</type>
                    </dependency>

                    <dependency>
                        <groupId>com.adobe.air</groupId>
                        <artifactId>compiler</artifactId>
                        <version>${flex.framework.version}</version>
                        <type>pom</type>
                    </dependency>                   
                    -->
                    
                    <dependency>
                         <groupId>com.adobe.flex.compiler</groupId>
                         <artifactId>adt</artifactId>
                         <version>${flex.framework.version}</version>
                    </dependency>
                    
                </dependencies>

                <configuration>
                  <flexBuilderCompatibility>true</flexBuilderCompatibility>
                  <!--<loadConfig>${settings.localRepository}/com/adobe/flex/framework/framework/${flex.version}/configs_zip/airmobile-config.xml</loadConfig>-->
                  <!--<sourceFile>${project.build.directory}/exampleMain.mxml</sourceFile>-->
                  <descriptorTemplate>${project.build.directory}/main-app.xml</descriptorTemplate>
                  <configurationReport>true</configurationReport>

                  <keystore>${keystore.file}</keystore>
                  <storepass>${keystore.password}</storepass>

                  <!--optionally include files in the AIR package -->
                  <includeFileSets>
                    <fileSet>
                      <directory>${project.build.directory}</directory>
                      <includes>
                        <include>*.*</include>
                      </includes>
                    </fileSet>
                  </includeFileSets>
                
                </configuration>

                <executions>
                  <execution>
                    <goals>
                      <goal>sign-air</goal>
                    </goals>
                  </execution>
                </executions>
          </plugin>

        </plugins>
    </build>

</project>

请注意,由于我不想编译任何swf文件(它们已经存在),因此我保留Packaging = air。同样对于“ org.sonatype.flexmojos”插件,我只保留了“ com.adobe.flex.compiler adt”作为依赖项,因为我不希望有任何编译源。

搜索并找到以下链接-

herehere

我遵循相同的步骤,但是出现以下错误-

Caused by: org.apache.maven.plugin.MojoExecutionException: Error invoking AIR api
        at org.sonatype.flexmojos.air.SignAirMojo.execute(SignAirMojo.java:341)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        ... 17 more
Caused by: java.lang.NullPointerException
        at org.sonatype.flexmojos.air.SignAirMojo.getAirDescriptor(SignAirMojo.java:386)
        at org.sonatype.flexmojos.air.SignAirMojo.execute(SignAirMojo.java:213)
        ... 19 more

搜索了该错误文本,有一些参考文献,但没有什么是具体的。 This不能解决我的问题。

我也尝试过使用this,但它还会带来其他错误

但是真正的问题是,我的方法是否正确?有什么方法可以只编译AIR文件而不编译任何源文件吗?

任何建议都会受到高度赞赏。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)