Apache flex Maven发行版:执行似乎打破了构建助手:添加源代码
我有一个相当简单的Flex SWC模块,它是通过Maven Flexmojos插件编译的。该模块还在generate sources阶段使用flexmojos:generate目标创建Java服务和域类的Actionscript3等价物。常规源位于Apache flex Maven发行版:执行似乎打破了构建助手:添加源代码,apache-flex,actionscript-3,maven-2,build-automation,flexmojos,Apache Flex,Actionscript 3,Maven 2,Build Automation,Flexmojos,我有一个相当简单的Flex SWC模块,它是通过Maven Flexmojos插件编译的。该模块还在generate sources阶段使用flexmojos:generate目标创建Java服务和域类的Actionscript3等价物。常规源位于src/main/flex中,生成的源位于src/main/flex generated中。生成的源未签入Subversion。与许多其他flexmojos用户一样,我使用构建助手:添加源代码目标将第二个源代码树添加到我的编译中。这几个月来一直运行良好
src/main/flex
中,生成的源位于src/main/flex generated
中。生成的源未签入Subversion。与许多其他flexmojos用户一样,我使用构建助手:添加源代码目标将第二个源代码树添加到我的编译中。这几个月来一直运行良好,Maven输出通常如下所示:
[INFO] ------------------------------------------------------------------------
[INFO] Building myproj Core Client -- Flex Service
[INFO] task-segment: [deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [flexmojos:generate {execution: create-actionscript-classes}]
[INFO] Flexmojos 3.7.1
[INFO] Apache License - Version 2.0 (NO WARRANTY) - See COPYRIGHT file
[INFO] flexmojos 3.7.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[INFO] Calling the generator for each Java class.
[INFO] Generating: /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex-generated/com/myprojvision/core/domain/security/Group.as
.......
[INFO] [build-helper:add-source {execution: add-source}]
[INFO] Source directory: /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex-generated added.
[INFO] Flex compiler configurations:
.....
-compiler.source-path /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex
请注意,flex编译器源路径非常好地表示了这两个源目录。此安装程序将成功打包、安装和部署SWC工件。然而,现在我们希望使用Maven发布插件来自动化发布过程。release:prepare
目标运行良好。但是,release:perform目标失败,因为由于某些未知原因,flex编译器没有获得生成的源目录:
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Building myproj Core Client -- Flex Service
[INFO] [INFO] task-segment: [deploy]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] [flexmojos:generate {execution: create-actionscript-classes}]
[INFO] [INFO] Flexmojos 3.7.1
[INFO] [INFO] Apache License - Version 2.0 (NO WARRANTY) - See COPYRIGHT file
[INFO] [INFO] Calling the generator for each Java class.
[INFO] [INFO] Generating: /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex-generated/com/myprojvision/core/domain/security/Group.as
...
[INFO] [INFO] [build-helper:add-source {execution: add-source}]
[INFO] [INFO] Source directory: /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex-generated added.
...
[INFO] [INFO] Flex compiler configurations:
[INFO] -compiler.source-path /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex
请注意,文件是在正确的位置生成的,正确调用了build helper,但是flex compiler.source-path缺少生成的源目录,因此产生了一个flex class not found错误。这个问题让我感到惊讶的是,release:prepare在forked-Maven生命周期中做了一个[clean,verify],而且它是有效的,但是release:perform没有……所以看起来问题并不在于fork
以下是build helper插件的配置:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>${project.basedir}/src/main/flex-generated</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
org.codehaus.mojo
构建助手maven插件
添加源
生成源
添加源
${project.basedir}/src/main/flex已生成
请注意,如果我放弃构建助手插件并使用flexmojo的SourcePath配置,那么一切都可以正常工作
<sourcePaths>
<path>${project.basedir}/src/main/flex</path>
<path>${project.basedir}/src/main/flex-generated</path>
</sourcePaths>
${project.basedir}/src/main/flex
${project.basedir}/src/main/flex已生成
但是,SourcePath已被弃用,对于那些具有多个flex源代码树的源代码,未来的发展方向是build helper。除了flex生成的源代码未签入SVN之外,您可能还需要在
target
文件夹下生成它们。我认为这可能会混淆发布插件。尝试在该文件夹下生成源代码,并使用build helper插件将其添加到构建中。这里也有同样的问题。文件是否签入版本控制似乎无关紧要,因为我在签入和不签入的情况下都尝试过,结果是一样的
我将尝试将我的添加到同一个源路径,看看它是否解决了问题,但这肯定是一个折衷方案。我第一次尝试这样做时,似乎GraniteDS并不特别喜欢它
编辑:我刚刚查看了flexmojos插件的源代码,SourcePath并没有被弃用。这是在从行李箱结账后发生的
svn co http://svn.sonatype.org/flexmojos/trunk flexmojos
瞧,
我有一个类似的问题,我想在jar中打包一个.xml文件。为了添加它,我使用了buildhelpermaven插件,并像上面一样添加了它。在构建过程中运行良好,但在发布时:perform将丢失.xml文件
相反,我发现通过使用POM的
部分,我过得更好。我还采纳了MaestroDev用户指南的建议,将.xml文件视为二进制文件,并将一些信息放在POM中以防止其被过滤
(底部称为“防止二进制资源过滤”)
这似乎对我有用。不确定它是否适合您,因为flex是如何构建的,但它看起来不像您已经有了一段时间的答案,这可能就是:)