Esto solo requiere un poco de uso avanzado de maven jar & war plugin.
primero que tiene clases de Java y algunas WEB-INF/artefactos
Digamos que esto representa la principal guerra. Solo usas la característica Overlays de maven-war-plugin. La forma más básica consiste en especificar la dependencia guerra:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service-impl</artifactId>
<version>${version}</version>
<type>war</type>
<scope>runtime</scope>
</dependency>
y di plugin de guerra experto para fusionar los activos de esta dependencia en la guerra principal (donde estamos ahora)
<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>
También incluyen un frasco tipo de dependencia en el segundo (que será un JAR en WEB-INF/lib/
)
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service</artifactId>
<version>${version}</version>
<type>jar</type>
</dependency>
Y también hay que especificar la dependencia de las clases de la tercera guerra:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service-impl</artifactId>
<version>${version}</version>
<classifier>classes</classifier>
<type>jar</type>
</dependency>
Aviso del clasificador, es necesario porque está especificando 2 dependencias del mismo artefacto ...Para que funcione, tiene que configurar el plugin frasco en el tercer artefacto (guerra tipo de artefacto), en relación con el clasificador y el hecho de que necesita 2 paquetes desde uno artefactos (guerra & frasco):
<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>
Gracias, muy útil. Al principio no me di cuenta de que el plugin jar en realidad tiene que ser utilizado en el archivo pom del tercer proyecto. Después de incluirlo, todo funcionó a la perfección. – AndreiM