如何使用maven配置文件和覆盖来构建和打包多个指定的项目?

时间:2014-06-24 11:16:34

标签: java eclipse maven maven-plugin overlays

我有一个名为MyWebProject的Web项目,它也包含子模块并打包为POM,我有另外两个简单的java项目,名为SimpleJavaProject1和SimpleJavaProject2,它包装为JAR。

我对web peoject都有依赖性。所以我必须使用Maven Profile和Overlays这样的方式,当我用构建JavaProject1构建和打包我的web项目时,web项目在其战争中包含SimpleJavaProject1,当我说JavaProject2时它应该包括SimpleJavaProject2。并且它应该仅对指定的java项目使用Overlays。

我可以在个人资料中使用叠加层吗?

请提出一些想法,如果有的话......

2 个答案:

答案 0 :(得分:1)

我不熟悉叠加层,但希望这种方法也适用于它们。

通常可以通过在父POM中根据配置文件定义属性来解决此类问题:

<profiles>
    <profile>
        <id>JavaProject1</id>
        <properties>
          <java.project>SimpleJavaProject1</java.project>
          <java.project.version>1.1</java.project.version>
        </properties>
    </profile>
    <profile>
        <id>JavaProject2</id>
        <properties>
          <java.project>SimpleJavaProject2</java.project>
          <java.project.version>1.2</java.project.version>
        </properties>
    </profile>
</profiles>

然后在定义依赖项时使用此属性(并希望您的叠加层也是如此):

<dependency>
    <groupId>com.foo</groupId>
    <artifactId>${java.project}</artifactId>
    <version>${java.project.version}</version>
</dependency>

答案 1 :(得分:1)

知道了...引用@Duncan的答案我试过跟随它的工作。 : - )

以下是我的个人资料

<profile>
    <id>JavaProject1</id>
    <properties>
        <roject.groupId>mygroupId</project.groupId>
        <roject.artifactId>myartifactId</project.artifactId>
        <roject.version>${myversion}</project.version>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

<profile>
    <id>JavaProject2</id>
    <properties>
        <roject.groupId>mygroupId</project.groupId>
        <roject.artifactId>myartifactId</project.artifactId>
        <roject.version>${myversion}</project.version>
    </properties>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

我在war插件中添加了叠加,如下所示,

<overlays>
    <overlay>
        <groupId>${project.groupId}</groupId>
        <artifactId>${project.artifactId}</artifactId>
        <type>jar</type>
        <targetPath>WEB-INF/classes</targetPath>
    </overlay>
</overlays>

它运作成功。 : - )