8 Replies Latest reply on May 9, 2016 4:43 PM by ggopalkrishna

    Jive and Adding Plugins Automatcially on Build


      We want to be able to point to a new plugin without going into the admin console to add one.


      e.g. is it possible to create a jar and put it in a particular folder for Jive to use


      I know that Jive unpacks Jar files into a folder, but is ther more to that?


      We are willing to add it through the admin setup once, but would like to do no more than put a jar somewhere and restart a server everytime a plugin is changed (commit to head) via Jenkins.  In other words, we do not like the existing (as far as I know) mechanism whereby you ahve to remove a new w plugin jar and then install it and finally restart the server since this is not easily automatable.


      Does anyone have a solution for this?

      btw.  we have already solved issues related to restarting jive via Jenkins (there's an SSHExec plugin for Jenkins with psuedo tty for sudo commands)

        • Re: Jive and Adding Plugins Automatcially on Build

          From my experience, the plugin binaries are stored in the Jive database.  During app server startup, the binaries from the database are copied down to the file system (there is a /plugins directory).  If you update the files in the /plugins directory, they will simply be overwritten with the version from the database the next time you startup the app server.


          Uploading the jar files through the admin console performs the function of saving it to the database.  If you can/want to try to save the jars manually to the database, you can try to skip the 2-step process.  You might be able to work something out, but you'll probably need to look at the Jive code that saves plugin jars to the database to see if it's doing anything special.

            • Re: Jive and Adding Plugins Automatcially on Build
              Ryan Rutan

              The system used to support hot plugin deploys from the file-system, and it was moved to the DB once the clustering got too advanced for such a simple deploy mechanism.  That being said, you can use the Maven cargo start deployment option, and deploy plugins directly from your maven project.  The database plugin table is only used at startup to read binaries and serialize to the folders.  It is not "needed" at runtime, hence the reason the cargo option works.


              Hope this helps,


                • Re: Jive and Adding Plugins Automatcially on Build

                  Is it necessary to actually, remove, then add the plugin?


                  We normally just upload our new version over the top.


                  We've been begging for years now for the ability to 'hot load' plugins, i.e upload them and not even have to perform a restart. Should I assume that's never going to be possible?

                    • Re: Jive and Adding Plugins Automatcially on Build
                      Ryan Rutan

                      I know for a fact that our developers this feedback, and are making incremental changes towards this end.  Currently, Spring is used to initialize numerous frameworks at startup, and it's the lowest common denominator that hits.  If just one of them requires a restart to make it's config "work correctly", then it all needs to be restarted.  It's a slow process due to the extent of the changes, but I know that the Engineering team at Jive has kept this in mind as they adopt new technologies and update existing ones.


                      While not the short-term answer you were looking for, but I hope it at least keeps the hope alive.  As it should be.  =)

                • Re: Jive and Adding Plugins Automatcially on Build

                  In case anyone is still looking for an answer to this one,


                  in dev (e.g. on your local build), you can add this to your web/pom.xml:



                          <plugin.dirs>${basedir}/../allvideosplugin/target/allvideosplugin,${basedir}/../tableauplugin/target/tableauplugin, ${basedir}/../jirawidget/target/jirawidget-1.0-</plugin.dirs>



                  above, it will put in the plugins (custom by myself) for allvideos and tableau as well as the jira plugin.  the jira plugin was for Jive 6, so the directory was generated with the version number, whereas the others are jive7


                  for prod / staging, etc. (not your local build, but with the rpm), you need to change the blob data in the jiveplugins directory.  this is a bit more complex but doable...