如何配置maven-war-plugin仅将classes.jar而非war包存入本地maven仓库
Maven War项目仅安装classes.jar到本地仓库的配置方案
配置逻辑
Maven默认会同时安装项目主打包产物(war包)和附加产物(war插件生成的classes.jar)到本地仓库,全局设置maven-install-plugin的skip参数会跳过所有产物安装,因此仅需单独排除war主产物的安装即可。
适配新版maven-install-plugin(3.0.0及以上)
步骤1:保留maven-war-plugin的classes.jar生成配置
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <attachClasses>true</attachClasses> <classesClassifier>classes</classesClassifier> </configuration> </plugin>
步骤2:配置install插件跳过war主产物安装
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>3.1.1</version> <configuration> <!-- 仅匹配war类型主产物跳过安装,附加classes.jar不受影响 --> <skipIfPackagingMatches>war</skipIfPackagingMatches> </configuration> </plugin>
兼容旧版maven-install-plugin(3.0.0以下)
旧版本无skipIfPackagingMatches参数,可禁用默认安装逻辑,手动指定仅安装pom和classes.jar:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>default-install</id> <phase>none</phase> </execution> <execution> <id>custom-install</id> <phase>install</phase> <goals> <goal>install-file</goal> </goals> <configuration> <pomFile>${project.basedir}/pom.xml</pomFile> <file>${project.build.directory}/${project.build.finalName}-classes.jar</file> <classifier>classes</classifier> </configuration> </execution> </executions> </plugin>
验证方式
执行mvn clean install后,访问本地.m2仓库对应项目目录,仅会保留pom文件、xxx-classes.jar及相关校验文件,无war包。
注意:以上配置仅跳过war包的仓库安装步骤,本地target目录下仍会正常生成war包,若不需要生成war包可额外在war插件配置中添加<skip>true</skip>参数。
内容的提问来源于stack exchange,提问作者Mathias
相关产品推荐
相关产品推荐

