I have a main web project that contains all the things required to deploy and hit the page via a browser. Then I have several "functions" each as a separate project that can be included into the main project.
To take an example, I have MainApp and functions.reportsApp.
When building these with ant
the following happens:
- MainApp.war - mainApp/jsf/Pages.faces, etc - reportsApp/jsf/Reports.faces, etc - WEB-INF/web.xml, mainapp-faces-config.xml, reportsApp-faces.config.xml, etc - WEB-INF/lib - MainApp.jar - META-INF/* (MainApp's) - my/company/MainApp/Code.class - functions.reportsApp.jar - META-INF/* (reportsApp's) - my/company/reportsApp/Code.class
This works fine, and as I understand .war
and .jar
spec, is correct.
In Eclipse though, I want to have both projects open and deploy/develop to the Tomcat server setup there. I have the following:
Imported both projects, setup MainApp to have ReportsApp as a project dependency (via, MainApp-Properties, Java Build Path, Projects).
NOTE: MainApp's web.xml
specifies:
<param-name>javax.faces.CONFIG_FILES</param-name> <param-value> /WEB-INF/reportsApp-faces-config.xml, /WEB-INF/mainApp-faces-config.xml </param-value>
reportApp's web.xml
specifies:
<param-name>javax.faces.CONFIG_FILES</param-name> <param-value> /WEB-INF/reportsApp-faces-config.xml </param-value>
I notice in MainApp-Properties-Deployment Assembly that Eclipse created:
src:functions.reportsApp, deployPath: WEB-INF/lib
This turns up deployed by Eclipse as Tomcat/webapps/MainApp/WEB-INF/lib/functions.reportsApp.war
. WAR? This makes no sense to me and doesn't work.
To make it work, I have to:
- Add to MainApp a folder which I (via the Advanced section) Link to ReportApp's web directory.
- Add to MainApp's Deployment Assembly that linked folder and select MainApp's web folder as the 'Folder for deployment descriptor'
That gets me the web/*
(JSF, etc.) content into Tomcat/webapps/MainApp
and the WEB-INF content of ReportsApp merged into WEB-INF of MainApp.
I also have to make sure that MainApp's Deployment Assembly contains functions.reportsApp.jar
to ensure that it gets deployed to tomcat under MainApp/WEB-INF/lib
.
Surely Eclipse could have figured all this itself? That one web app depending on another web app MUST mean that the dependency would have to be deployed correctly?
Related questions: