使用maven从单个通用项目创建不同的战争

时间:2014-06-02 05:52:27

标签: java maven-plugin maven-war-plugin

我有一个基于休息网络服务的通用类型的项目。这个项目包含供不同客户使用的软件包。例如

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 profiling它正在通过属性文件提供资源创建不同的战争,但我也希望在战争创建期间过滤包

有办法做到这一点吗? maven war插件支持吗?我正在使用maven,spring web服务。

1 个答案:

答案 0 :(得分: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由逗号","

分隔

对于模式**/client2/**/*.class,第一个**/表示com.package,下一个/**/表示service and service.impl个包。您还可以通过将*.class模式更改为classA.class来添加特定类。

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