covers all possible cases Release a new version every time any shipping cost algorithm changes or we add new countries Develop a simple core application that covers only the common features Make the application extensible with country modules “ ” If a shipping algorithm changes, our core application remains the same and only that specific extension must be changed
is how we describe what we provide and expect) Import-Package: com.liferay.shipping.api.model, com.liferay.shipping.api.util, com.liferay.portal.kernel.io.unsync;resolution:=optional, com.liferay.portal.kernel.util;resolution:=optional, freemarker.cache;resolution:=optional, freemarker.template;resolution:=optional Export-Package: com.liferay.shipping.api.model;version="1.0.0", com.liferay.shipping.api.util;version="1.0.0" #2
(this is how we describe what we provide and expect) Import-Package: com.liferay.shipping.api.model, com.liferay.shipping.api.util, com.liferay.portal.kernel.io.unsync;resolution:=optional, com.liferay.portal.kernel.util;resolution:=optional, freemarker.cache;resolution:=optional, freemarker.template;resolution:=optional Export-Package: com.liferay.shipping.api.model;version="1.0.0", com.liferay.shipping.api.util;version="1.0.0" The BND tool (bnd.bndtools.org) can discover dependencies and automatically generate export/import manifest headers! Liferay SDK also allows you to use BND tool!
functionality) manifest manifest manifest OSGi service registry Interface Service 1 ... Service N REGISTER REGISTER USE manifest There are number of component frameworks on top of OSGi (Declarative Services and Blueprint being part of the specs) which greatly simplify the usage of services!