我有一个基于rest web service的通用类型的项目。该项目包含针对不同客户端的包。例如
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
这只是一个例子,但是有很多包。我想从我的通用项目中生成三个war,其中包含运行client1,client2和client3 war所需的必要包。
我可以为client1,client2和client3创建三个新项目并生成war .但是,如果有办法从我的通用项目中为不同的客户端生成不同的war,这样我就不必为不同的客户端创建一个新项目并粘贴该客户端所需的必要包。
我已经使用maven分析,它是通过属性文件提供的资源创建不同的战争,但我也希望在战争创建期间过滤包。
有办法做到这一点吗?maven war插件支持吗?我正在使用maven,spring web service
您可以在构建文件时使用maven war插件。当在WAR中打包时,可以从target/classes中的package对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.service
和com.package.client1.service.impl
包中的类。