1. 程式人生 > >Maven-war-plugin外掛的使用

Maven-war-plugin外掛的使用

     在專案開發中,A依賴於B,如果兩個都是jar專案,那就好辦,但是今天在專案中,遇到A和B都是war專案的時候,那就遇到棘手的時候了,編譯會報錯,錯誤描述如下:

錯誤描述可以發現,沒有發現jar包,這樣就需要用到Maven-war-plugin外掛來把B專案生成jar包來給A依賴了,現在說說如何使用Maven-war-plugin外掛

1、在A(pom.xml)配置:新增Maven-war-plugin。

<plugins>
         <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                    <configuration>
                    <!--<attachClasses>true</attachClasses>,這樣B專案內就可以使用A專案定義的class了-->
                        <attachClasses>true</attachClasses>
                    <!--打包的時候如果不想使用WEB-INF/classes,則在外掛的配置內指定 <archiveClasses>true</archiveClasses> 
                        即可,這樣會把專案的java檔案打包成jar放到WEB-INF/lib內-->
                        <archiveClasses>true</archiveClasses>
               <!--設定jar包名字,如果A中沒有定義該名字,那麼名字為classes,如下圖:-->
                    <classesClassifier>api</classesClassifier>
                <!--
                        相同點:
                            packagingExcludes與webResources 均可以排除某些檔案。
                        不同點:
                            packagingExcludes針對拷貝到target後的資源進行處理。
                            webResources針對編譯前的資源進行處理。
                    -->
                        <packagingExcludes>WEB-INF/classes/**/**</packagingExcludes>
                        <webResources>
                            <resource>
                              <directory>target/${project.artifactId}/WEB-INF/classes</directory>
                              <excludes>
                                  <exclude>**/**</exclude>
                              </excludes>
                            </resource>
                        </webResources>
                   </configuration>                
   
        </plugin>
</plugins>

                  

這樣就可以生成一個war包跟一個jar包了!!!!

2、在B(pom.xml)配置:

        
                <dependency>
			<groupId>com.xxx</groupId>
			<artifactId>A</artifactId>
			<version>${xxx.version}</version>
			<type>jar</type>
                        <!--如果A中定義的名字要一樣!!!--> 
                        <classifier>api</classifier>
		</dependency>
然後編譯B專案,專案編譯成功!!!!