The com.liferay.portal.bootstrap
module exports many third party Java packages
that can cause problems if used improperly. If your WAR’s Gradle file, for
example, uses the compile
scope for a dependency that Liferay’s OSGi runtime
already provides, the dependency JAR is included in the WAR’s WEB-INF/lib
and
deployed in the resulting WAB, and two versions of dependency classes wind up on
the classpath. This can cause weird errors that are hard to debug.
To find a list of the packages exported by com.liferay.portal.bootstrap
, go to
the source file modules/core/portal-bootstrap/system.packages.extra.bnd
. If
you don’t have access to the source code, the same list (in a less user-friendly
format) is in the META-INF/system.packages.extra.mf
file in
[LIFERAY_HOME]/osgi/core/com.liferay.portal.bootstrap.jar
. These packages are
installed and available in Liferay’s OSGi runtime. If your module or WAR uses
one of them, specify the corresponding dependency as being “provided” (provided
by Liferay DXP). Here’s how to specify a provided dependency:
Maven: <scope>provided</scope>
Gradle: providedCompile
Now you can safely leverage third party packages Liferay DXP provides!