這隻需要一點先進的使用maven jar & war插件。
有Java類和一些WEB-INF首先一個/文物
讓我們說這代表了主力戰將。你只需使用maven-war-plugin的Overlays功能。最基本的方法是指定戰爭依賴性:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service-impl</artifactId>
<version>${version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
,並告訴Maven的戰爭插件來這種依賴的資產合併到主戰爭(我們現在)
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<dependentWarExcludes>WEB-INF/web.xml,**/**.class</dependentWarExcludes>
<webResources>
<resource>
<!-- change if necessary -->
<directory>src/main/webapp/WEB-INF</directory>
<filtering>true</filtering>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
還包括一個罐子鍵入第二個依賴(這將是一個WEB-INF/lib/
JAR)
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service</artifactId>
<version>${version}</version>
<type>jar</type>
</dependency>
而且你還需要指定從第三戰中的類依賴性:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service-impl</artifactId>
<version>${version}</version>
<classifier>classes</classifier>
<type>jar</type>
</dependency>
注意到分類器,這是必要的,因爲您指定了2個相同的工件的依賴關係...要使其工作,你必須建立在第三神器Jar插件(戰型神器),關於分類器和你需要從一個工件(戰爭& JAR)2包的事實:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<!-- jar goal must be attached to package phase because this artifact is WAR and we need additional package -->
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<!--
classifier must be specified because we specify 2 artifactId dependencies in Portlet module, they differ in type jar/war, but maven requires classifier in this case
-->
<classifier>classes</classifier>
<includes>
<include>**/**.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
謝謝,很有幫助。起初沒有意識到jar插件實際上必須用在第三個項目的pom文件中。包括它後,所有的工作都很完美。 – AndreiM