diff --git a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala index 74d2561..329bdb0 100644 --- a/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala +++ b/src/main/scala/gitbucket/core/plugin/PluginRegistory.scala @@ -297,8 +297,10 @@ pluginName = plugin.pluginName, pluginVersion = plugin.versions.last.getVersion, description = plugin.description, - pluginClass = plugin - )) + pluginClass = plugin, + pluginJar = pluginJar, + classLoader = classLoader + ), true) } catch { case e: Throwable => { diff --git a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala index d851ee7..68400d5 100644 --- a/src/main/scala/gitbucket/core/servlet/InitializeListener.scala +++ b/src/main/scala/gitbucket/core/servlet/InitializeListener.scala @@ -114,9 +114,13 @@ val cl = Thread.currentThread.getContextClassLoader try { using(cl.getResourceAsStream("plugins/plugins")){ pluginsFile => + val pluginRepositoryDir = new File(PluginHome, ".repository") + if(!pluginRepositoryDir.exists){ + pluginRepositoryDir.mkdirs() + } val plugins = IOUtils.toString(pluginsFile, "UTF-8").split("\n").map(_.trim) plugins.collect { case plugin if plugin.nonEmpty && !plugin.startsWith("#") => - val file = new File(PluginHome, plugin) + val file = new File(pluginRepositoryDir, plugin) logger.info(s"Copy ${plugin} to ${file.getAbsolutePath}") using(cl.getResourceAsStream("plugins/" + plugin), new FileOutputStream(file)){ case (in, out) => IOUtils.copy(in, out) } }