0

在我们公司,我们通常为众多不同的客户构建许多弹性客户端应用程序。每个 Flex 应用程序通常在运行时加载,以及不同种类的独立 Flex 模块 swf。

我正在尝试 Mavenise 项目,但对如何取得进展感到困惑。目录结构非常平坦,但我不知道如何对 pom 进行分层,以便能够从层次结构中的任何位置进行构建。

结构可能如下:

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 中,将包指定为“pom”,但这不允许实际为 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)还有另一种嵌套pom的方法,聚合器级别的pom也执行一些编译目标吗?

3)我已经看到您可以在同一级别使用除 pom 以外的名称添加其他 pom 以促进这一点,但似乎我不能在声明中包含这些 pom。

任何帮助/想法表示赞赏。

4

1 回答 1

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

于 2013-09-09T13:15:35.250 回答