On 4/29/16, 10:37 AM, "Christofer Dutz" <christofer.d...@c-ware.de> wrote:
> >Hi Alex, > >but I sort of get at least 3 runs: >1. Sort of generate JavaScript from the ActionScript >2. Compile the ActionScript and include the JavaScript >3. Compile the extern Yes it should be 3 and no more than 3. > >So in Maven-speak I would propose to compile the normal swc to the main >artifact for a module and compile the extern to the same module, but use >a classifier "extern" for this (I know that probably the "classifier" >will not ring a bell for you, but I hope it will soon). I could implement >the compiler that for each swc it tries to resolve the "extern" artifact >for the same module, if it gets one, it adds that to the library path, if >not, it doesn't. The Problem is that Maven will probably handle this, but >I doubt the IDEs will. > >In any other solution this including the different parts of the same >module is going to drive people nuts. We deffinitely have to fix this. I'm not sure what you think needs fixing. I think we must support libraries that have API signatures that can be different on different platforms. Do any other Maven projects support single code base to multiple platforms? Or maybe single code base with conditional compilation to different versions or vendors of Java? IOW, different flavors of artifacts are going to be required. Maybe that's a classifier, or maybe it is something else, but I would hope Maven supports something like this. With my limited knowledge of Maven, it seems like we might need more than one pom.xml per project or create separate projects for the "extern" swcs that share the same source code. In fact, the latter is how I'm currently setting up Flash Builder. I'm going to try to illustrate a simple case below: Core project needs to produce: - .js files compiled with COMPILE::AS3=false,COMPILE::JS=true - .swc compiled with COMPILE::AS3=true,COMPILE::JS=false, including .js files - .swc compiled with COMPILE::AS3=false,COMPILE::JS=true I think you got that far, but now look at some downstream swc like Binding. It needs to produce: - .js files compiled with COMPILE::AS3=false,COMPILE::JS=true but with the Core.swc compiled with COMPILE::AS3=false,COMPILE::JS=true as a dependency for the -library-path. - .swc compiled with COMPILE::AS3=true,COMPILE::JS=false, including .js files but with the Core.swc compiled with COMPILE::AS3=true,COMPILE::JS=false as a dependency on the -external-library-path - .swc compiled with COMPILE::AS3=false,COMPILE::JS=true but with the Core.swc compiled with COMPILE::AS3=false,COMPILE::JS=true as a dependency for the -library-path (and maybe someday, on the -external-library-path instead of -library-path). Hopefully you can see that the different compiles in Binding have different upstream dependencies. It wasn't clear from what I read about classifiers that you could switch upstream dependencies that with a classifier. Classifiers just seem to label the output artifact. We need a solution for a single code base to be used to create different results with different dependency sets. Or maybe it should be 3 projects, one for each step? It'll be a pain in Ant to refactor to two or three projects per current project, but it is doable since Ant can just use relative paths to find things like the shared source code. Thoughts? -Alex