0

我有一个基于 rest web 服务的通用类型的项目。这个项目包含用于不同客户的包。例如

com.package.client1.service
com.package.client2.service
com.package.client3.service

com.package.client1.service.impl
com.package.client2.service.impl
com.package.client3.service.impl

这只是一个示例,但有很多包。我想从我的通用项目中生成三个战争,其中包含运行 client1、client2 和 client3 战争所需的必要包。

我可以为 client1、client2 和 client3 创建三个新项目并生成战争。但是,如果有办法从我的通用项目中为不同的客户生成不同的战争,这样我就不必为不同的客户创建一个新项目并粘贴该客户端所需的必要软件包。

我使用了 maven 分析,它使用通过属性文件提供的资源创建不同的战争,但我也希望在战争创建期间过滤包

有没有办法做到这一点?Maven 战争插件是否支持它?我正在使用 maven,spring 网络服务。

4

1 回答 1

1

您可以在构建文件时使用 maven war 插件。在 WAR 中打包时,可以对excludes/includes目标/类中的包中的类进行配置。

将以下代码添加到您的 pom.xml 文件中以排除某些类:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
            <!-- To exclude certain classes -->
            <excludes>**/client2/**/*.class, **/client3/**/*.class</excludes>
        </configuration>
    </plugin>
</plugins>

或者您可以仅通过使用<includes>标记指定要包含的类来包含某些类。

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>

                <!-- To include certain classes -->
                <includes>**/client1/**/*.class</includes>
            </configuration>
        </plugin>
    </plugins>

笔记:

<excludes>/<includes>应该采取一种模式,而不是一系列<exclude>/<include>元素。多个excludes/includes用逗号分隔","

对于 pattern **/client2/**/*.class, first**/表示com.package, next/**/表示service and service.implpackage。您还可以通过将*.class模式更改为classA.class.

输出: 生成的war文件包含类com.package.client1.servicecom.package.client1.service.impl包。

于 2014-06-02T10:45:57.750 回答