bean class dependencies jsp view Jahia 7.3 Jahia 8

Class usage from another module in a view (jsp)

Question

How I can use a class, from another module, in a jsp (a view in another module)?

Answer

In the module where the class is definded, the package must be exported in pom.xml (e.g. org.jahia.modules.classdepmod1.utils):

...
 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <configuration>
                    <Export-Package>
                            org.jahia.modules.classdepmod1.utils
                    </Export-Package>
                    <instructions>
                        <Jahia-Depends>default</Jahia-Depends>
                    </instructions>
                </configuration>
... 

In the module where the class should be used, must be a dependency to the oder module (e.g. classdepmod1) and import the package:

...
 <properties>
    <jahia-depends>classdepmod1,default</jahia-depends>
  </properties>
....
  <dependencies>
        <dependency>
            <groupId>org.jahia.modules</groupId>
            <artifactId>classdepmod1</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
  </dependencies>
....
   <plugins>
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
             <Import-Package>
                 org.jahia.modules.classdepmod1.utils,           
                 ${jahia.plugin.projectPackageImport},
                 *
             </Import-Package>
          <instructions />
        </configuration>
......
  

After a rebuild and redeployment of this modules, the class could be used in the jsp as import or fully qualified with package like:

...
<%@page import="org.jahia.modules.classdepmod1.utils.*" %>
....
  <% MyDependentUtil myDepUtil = MyDependentUtil.getInstance(); %>
  .....
  <%=myDepUtil.get....%>
....