如何打包嵌套的maven模块以进行完整的产品套件构建

时间:2013-07-24 09:24:39

标签: flex maven module pom.xml flex-mojos

在我们公司,我们通常为众多不同的客户构建一些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声明。

感谢任何帮助/想法。

1 个答案:

答案 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”,它会构建一个不同的模块子集。