場景:puzzle-web(基礎 Web 模塊)與 puzzle-web-demo(擴展 Web 模塊),後者依賴前者。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version> <!-- 避免產生帶時間戳 jar -->
<configuration>
<archiveClasses>false</archiveClasses> <!-- 不將 classes 打成 jar,防配置文件重複 -->
<attachClasses>true</attachClasses> <!-- 產生 classes jar 供編譯期依賴 -->
</configuration>
</plugin>

puzzle-web-1.0.war — 部署用;puzzle-web-1.0-classes.jar — 編譯依賴用。
<dependency> <groupId>com.puzzle</groupId> <artifactId>puzzle-web</artifactId> <version>1.0</version> <type>war</type> <!-- 運行期需 war 包 --> <scope>runtime</scope> </dependency> <dependency> <groupId>com.puzzle</groupId> <artifactId>puzzle-web</artifactId> <version>1.0</version> <classifier>classes</classifier> <!-- 編譯期用 classes jar --> <scope>provided</scope> </dependency>
要點:war 類型供運行期皮膚合併,classes classifier 供編譯期,作用域 provided 避免重複打包。