Alright, I understand that the reason Openfire keeps using Ant build tool with no dependency management support is that migration to Maven is very complex task and possibly would require to freeze the project for month or two. Fortunately there is another solution Openfire community would nicely implement with no drama. I had been using for a long while Apache Ivy dependency management tool which integrates easily with Ant. I suggest community to consider this solution while migration to Maven is too difficult manage. Here is Quick Start Guide which will give you the idea how to use it with Ant:
Quick Start | Apache Ivy
I’d contribute with migration to Maven or Ivy if help needed.
Now, as a new Openfire developer I imported whole project to Eclipse using build/eclipse/.classpath & .project files. This gave me an overview of actual project and plugin source code:
src/java
src/plugins/broadcast/src/java
src/plugins/clientControl/src/java
src/plugins/contentFilter/src/java
src/plugins/dbaccess/src/java
src/plugins/emailListener/src/java
src/plugins/fastpath/src/java
src/plugins/gojara/src/java
src/plugins/jingleNodes/src/java
src/plugins/justmarried/src/java
src/plugins/kraken/src/java
src/plugins/loadStats/src/java
src/plugins/monitoring/src/java
src/plugins/motd/src/java
src/plugins/nodejs/src/java
src/plugins/packetFilter/src/java
src/plugins/presence/src/java
src/plugins/registration/src/java
src/plugins/search/src/java
src/plugins/stunserver/src/java
src/plugins/subscription/src/java
src/plugins/userCreation/src/java
src/plugins/userImportExport/src/java
src/plugins/userservice/src/java
src/plugins/xmldebugger/src/java
src/test/java
src/test/throttletest/src
I was able to build with Ant the main Openfire project using command line:
ant openfire
I investigated the target directory and realized that Openfire by itself does not use too many jars. All jars I noticed are:
bcpg-jdk15on.jar
bcpkix-jdk15on.jar
bcprov-jdk15on.jar
hsqldb.jar
javax.websocket-api.jar
jtds.jar
log4j.xml
mail.jar
mysql.jar
npn-boot.jar
openfire.jar
postgres.jar
slf4j-log4j12.jar
startup.jar
I believe that all the rest required jars are part of Jetty or Tomcat server used to deploy Openfire to. I am not clear which jars actually are required but Eclipse reports the following classes missing:
bodyContent cannot be resolved
BodyTagSupport cannot be resolved to a type
Config cannot be resolved
Description
ContainerInitializer cannot be resolved to a type
Description
EVAL_BODY_BUFFERED cannot be resolved to a variable
Description
EVAL_PAGE cannot be resolved to a variable
InstanceManager cannot be resolved to a type
JettyJasperInitializer cannot be resolved to a type
JspC cannot be resolved to a type
JspException cannot be resolved to a type
JspTagException cannot be resolved to a type
JspWriter cannot be resolved to a type
LocalizationContext cannot be resolved to a type
Log cannot be resolved to a type
LogConfigurationException cannot be resolved to a type
org.apache.commons.logging cannot be resolved to a type
And many more…
It is not clear to me which jars from the following directories I am supposed to add to classpath in order to satisfy Eclipse configuration:
build/lib/*
build/lib/ant/*
build/lib/dist/*
build/lib/merge/*
build/lib/src/*
Another my observation is that even though I downloaded fresh Master version of the project from repository, the command “ant plugins” fails with errors which indicate missing libraries. Let me print here some:
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/user_002dbrowser_jsp.java:76: error: cannot access JspWriter
-
[of.javac] webManager.init(request, response, session, application, out ); *
-
[of.javac] ^*
-
[of.javac] class file for JspWriter not found*
-
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/workgroup_002dchatbot_jsp.java:77: error: cannot access PageContext*
-
[of.javac] workgroupAdminManager.init(pageContext);*
-
[of.javac] ^*
-
[of.javac] class file for PageContext not found*
-
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/workgroup_002dimage_002dsettings_js p.java:76: error: incompatible types: javax.servlet.jsp.PageContext cannot be converted to PageContext*
-
[of.javac] workgroupAdminManager.init(pageContext);*
-
[of.javac] ^*
-
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/workgroup_002dsound_002dsettings_js p.java:76: error: incompatible types: javax.servlet.jsp.PageContext cannot be converted to PageContext*
-
[of.javac] workgroupAdminManager.init(pageContext);*
-
[of.javac] ^*
-
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/workgroup_002dsummary_jsp.java:84: error: incompatible types: javax.servlet.jsp.PageContext cannot be converted to PageContext*
-
[of.javac] webManager.init(pageContext);*
-
[of.javac] ^*
-
[of.javac] /Users/softpro/devel/openfire/Openfire/work/plugins-dev/fastpath/target/jspc/ja va/org/jivesoftware/openfire/plugin/fastpath/workgroup_002dtext_002dsettings_jsp .java:126: error: incompatible types: javax.servlet.jsp.PageContext cannot be converted to PageContext*
-
[of.javac] workgroupAdminManager.init(pageContext);*
**
**
It would be very nice of community to share with me working eclipse project configuration files. Or any other specification showing which project or plugin project requires which libraries.
Thanks!