【问题标题】:How to use maven profile and overlays to build and package with specified project from multiple?如何使用 Maven 配置文件和叠加层从多个指定项目构建和打包?
【发布时间】:2014-06-24 11:16:33
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: java eclipse maven maven-plugin overlays


    【解决方案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>
    

    【讨论】:

    • 如果有两个配置文件,即一个用于环境,例如dev 或 prod 以及上面示例的另一个,即 javaproject1 或 javaproject2。我该如何处理?我可以在个人资料中使用叠加层吗?
    • @milind 您可以同时激活多个配置文件。所以你可以同时激活devjavaproject2。正如我所提到的,我对叠加层了解不多,所以恐怕无法提供建议。
    【解决方案2】:

    知道了...参考@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如下,

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

    成功了。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      相关资源
      最近更新 更多