Maven war包相互依賴

假設有兩個war包:A和B。A又依賴於B。根據Java規範,classpath不能指定WAR文件。這就意味着在編譯時,A項目沒法訪問B項目中定義的類,因此在A項目中,咱們不能像常規類組件那樣擴展或使用B定義的類。要解決這一問題,咱們必須從新設置maven-war-plugin的一項缺省配置,該設置以下面所示。maven

將如下配置添加到B項目的Maven pom.xml文件中。
ide

<build>ui

  <plugins>spa

    <plugin>插件

      <artifactId>maven-war-plugin</artifactId>code

      <configuration>xml

        <!-- 把class打包jar做爲附件 -->
<attachClasses>true</attachClasses>
<!-- 將項目的類文件打成jar放到lib目錄中
<archiveClasses>true</archiveClasses>
-->ci

      </configuration>it

    </plugin>io

  <plugins>

<build>

啓用attachClasses選項能夠把JAR文件(warsaw-1.0-classes.jar)和標準的WAR文件同時安裝到Maven倉庫中。要訪問該JAR文件,咱們須要以下所示的那樣修改A項目的依賴列表。

<dependencies>  
  <dependency>    
  <groupId>com.example.modular</groupId>    
  <artifactId>B</artifactId>    
  <version>1.0</version>    
  <type>war</type>  
</dependency>  
<dependency>    
   <groupId>com.example.modular</groupId>    
   <artifactId>B</artifactId>    
   <version>1.0</version>    
   <type>jar</type>    
   <classifier>classes</classifier>    
   <scope>provided</scope>  
</dependency>
</dependencies>

A項目用B WAR建立最終的Web歸檔文件,出於編譯須要,還使用了B的類(打包在JAR裏)。咱們將屬性classifier設置爲classes,以此定義該從倉庫中選擇哪一個工件。將scope設置爲provided,則是告訴Maven只在編譯時須要該工件,運行時則從其餘地方得到。「其餘地方」就是指B項目的WAR工件,WAR插件會將WAR和JAR合併在一塊兒。

相關文章
相關標籤/搜索