Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

maven skinnyWars does not remove ejb jars from WEB-INF\lib\

I've stumbled across maven topic skinnyWars at http://maven.apache.org/plugins/maven-ear-plugin/examples/skinny-wars.html. As described, I can use this method to move selected dependencies from WAR module to EAR module. They will be available for all other WAR modules located in EAR.

As I have discovered the dependencies which are moved must be declared in EAR module and have to be included in META-INF\lib catalog. That does not apply for EJB modules, which are located in root catalog of EAR module.

My question is how to remove duplicated EJB modules from WARs and point the reference to those located in EAR file?

The structure right now is like this:

\-EAR
 -ejb.jar
  -META-INF\lib
   -shared libraries
 -web.war
  -WEB-INF\lib
   -ejb.jar
   -other non-shared libraries
like image 892
TrueCurry Avatar asked Jun 25 '13 10:06

TrueCurry


1 Answers

I've answered a similar question: How to make maven place all jars common to wars inside the same EAR to EAR root?

Unfortunately this doesn't seem to work for ejb modules. They'll get duplicated as you have already mentioned.

One thing you can additionally use is a configuration for the maven-war-plugin:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <packagingExcludes>WEB-INF/lib/*.jar</packagingExcludes>
                </configuration>
            </plugin>

This will completly erase everything from the WAR's lib folder but it can also have its drawbacks in cases where you have to deploy the WAR additionally itself on a separate machine without the surrounding EAR.

like image 94
Turbokiwi Avatar answered Nov 08 '22 17:11

Turbokiwi