多模块项目交付两次不同的战争

时间:2019-12-11 12:26:23

标签: java spring maven

我正在研究一个多模块Spring MVC项目,其中一个模块必须发出具有所有依赖关系的战争,而另一个模块必须发出具有很少依赖关系的战争。这可能吗?如果是,我该如何实现?项目详细信息如下:

结构为:

Parent pom:
<modules>
  <web-war-with-all-dependencies>
  <web-ear-without-dependencies>  --> Only to pack the war into an ear.
</modules>

在Websphere中创建一个共享库,并将所有依赖项添加到其中。因此, <无依赖的网络耳朵> 将在那里部署。 将用于构建docker tomcat映像并托管在diff环境中。 我的项目必须支持两种环境。因此,这很奇怪。

1 个答案:

答案 0 :(得分:0)

使用Maven配置文件,并仅在某些配置文件中添加一些依赖项或使用范围设置它们:提供:

https://www.baeldung.com/maven-profiles

示例:

<profiles>
    <profile>
        <id>dev</id>
        <dependencies>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>testcontainers</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
            <dependency>
                <groupId>org.testcontainers</groupId>
                <artifactId>postgresql</artifactId>
                <version>${testcontainers.version}</version>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>prod</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <!-- my own library in my private repository which acts like a mock of testcontainers project. Don't ask :-) -->
            <dependency>
                <groupId>cz.jiripinkas</groupId>
                <artifactId>fake-testcontainers</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

然后使用以下命令构建项目:

mvn clean install -P dev

这将放入WAR测试容器库中

或:

mvn clean install -P prod

这将放入WAR伪造测试容器库中