在我们公司,我们通常为众多不同的客户构建一些Flex客户端应用程序。每个Flex应用程序通常在运行时加载,也有不同种类的独立Flex模块swfs。
我试图对该项目进行Mavenise,但我对如何进步感到困惑。目录结构非常扁平,但我无法想象如何对poms进行分层,以便能够从层次结构中的任何位置进行构建。
结构可能如下:
Client1 - pom.xml
-App1 - pom.xml
-App2 - pom.xml
-App3 - pom.xml
-Module1 - pom.xml
-Module2 - pom.xml
Client2 - pom.xml
-App1 - pom.xml
-App2 - pom.xml
-Module1 - pom.xml
-module2 - pom.xml
-Module3 - pom.xml
问题在于,如果我想构建说Client2 / App1及其所有相关模块(即Client2 / Module1& Client2 / Module2)。我当然可以声明:
<modules>
<module>Module1</module>
<module>Module2</module>
</modules>
在Client2 / App1 / pom.xml中,将包指定为&#39; pom&#39;,但这并不允许实际编译Client2 / App1本身的swf。
我可以将Client2 / App1打包为swf并让它构建Client2 / App1.swf本身,并在Client2 / pom.xml中声明:
<modules>
<module>App1</module>
<module>Module1</module>
<module>Module2</module>
</modules>
但是也想要独立构建Client2 / App2的选项,或任何其他应用程序。
1)我可以使用配置文件设置不同的模块声明,以便于任意客户端构建吗?
2)还有另一种嵌套poms的方法,聚合器级别pom也会执行一些编译目标吗?
3)我已经看到你可以在同一级别使用pom以外的名称添加额外的poms来促进这一点,但似乎我不能包括那些poms声明。
感谢任何帮助/想法。
答案 0 :(得分:0)
通常你会有一个定义模块的pom.xml(如果是Client1,这将是App1,App2,App3,Module1和Module2)如果你告诉maven构建Client1,这将自动构建所有客户端模块。通常,maven不支持您构建一个模块,并且maven会自动构建它所依赖的所有模块。但是,您可以在Client1-pom中创建单独的配置文件,每个配置文件选择一个不同的子集:
<profiles>
<profile>
<id>BuildApp1</id>
<modules>
<module>App1</module>
<module>Module1</module>
<module>Module2</module>
</modules>
</profile>
<profile>
<id>BuildApp2</id>
<modules>
<module>App2</module>
<module>Module1</module>
<module>Module2</module>
</modules>
</profile>
</profiles>
所以你会告诉maven激活配置文件“BuildApp1”或“BuildApp2”,它会构建一个不同的模块子集。