从我所看到的一切来看,似乎在构建时捕获此信息的唯一方法是编写您自己的调用 Flex 编译器类的 java 程序。实际上有几种不同的方法可以做到这一点,但我采用的方法是基于以下 pdf 第 10 页开始的报告示例:
http://blogs.adobe.com/flexdoc/files/flexdoc/oem/oem_guide.pdf
我感兴趣的只是构建的文件依赖关系,以便我可以将这些链接到版本控制中的源版本。因此,我省略了引用示例的定义、依赖项和先决条件部分。基本思路是构造一个flex2.tools.oem.Application对象,在上面运行“build”方法,然后使用getReport方法获取编译的所有血腥细节。这是我的解决方案代码的简化版本:
File file = new File ("C:/MyFlexApp/main.mxml");
File outputFile = new File("C:/MyFlexApp/bin/Foo.swf");
Application application = new Application(file);
application.setOutput(outputFile);
Configuration config = application.getDefaultConfiguration();
File[] libFile = new File[] {new File("C:/MyFlexApp/bin/baz.swc")};
config.addLibraryPath(libFile);
application.setConfiguration(config);
application.build(true);
report = application.getReport();
Message[] m = report.getMessages();
if (m != null)
{
for (int i=0; i<m.length; i++)
{
System.out.println(m[i].getLevel().toUpperCase() +
" MESSAGE " + i + ": " + m[i]);
}
}
// Lists the image files that are embedded.
System.out.println("\n\nEMBEDDED ASSETS: ");
String[] assetnames = report.getAssetNames(Report.COMPILER);
if (assetnames != null)
{
for (int i=0; i<assetnames.length; i++)
{
System.out.println(assetnames[i]);
}
}
// Lists the libraries that are used.
System.out.println("\nLIBRARIES: ");
String[] compilerLibs = report.getLibraryNames(Report.COMPILER);
if (compilerLibs != null)
{
for (int i=0; i<compilerLibs.length; i++)
{
System.out.println(compilerLibs[i]);
}
}
System.out.println("\nSOURCE NAMES: ");
String[] src = report.getSourceNames(Report.COMPILER);
if (src != null)
{
for (int i=0; i<src.length; i++) {
// Lists source files.
System.out.println(src[i]);
}
}
感谢 Shaun 为我提供了这个解决方案的所有帮助。