如何在Intellij中使用Gradle构建OpenFire插件?

时间:2014-12-27 21:03:06

标签: java intellij-idea gradle openfire

根据OpenFire文档(https://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html)构建自定义插件,我需要创建一个具有以下文件夹结构的jar:

myplugin/
 |- plugin.xml      <- Plugin definition file
 |- readme.html     <- Optional readme file for plugin, which will be displayed to end users
 |- changelog.html  <- Optional changelog file for plugin, which will be displayed to end users
 |- logo_small.gif  <- Optional small (16x16) icon associated with the plugin (can also be a .png file)
 |- logo_large.gif  <- Optional large (32x32) icon associated with the plugin (can also be a .png file)
 |- classes/        <- Resources your plugin needs (i.e., a properties file)
 |- database/       <- Optional database schema files that your plugin needs
 |- i18n/           <- Optional i18n files to allow for internationalization of plugins.
 |- lib/            <- Libraries (JAR files) your plugin needs
 |- web             <- Resources for Admin Console integration, if any
     |- WEB-INF/
         |- web.xml           <- Generated web.xml containing compiled JSP entries
         |- web-custom.xml    <- Optional user-defined web.xml for custom servlets
     |- images/

我知道有一个Ant构建脚本可以帮助我做到这一点,但是我无法找到它并且我在Gradle和Maven上度过了足够的时间,我宁愿不添加学习Ant并将XML处理到我的家务清单上。所以,我尝试制作Gradle构建脚本。不幸的是,Gradle对我没有任何意义,在Intellij中,它似乎只是做任何想做的事。

无论如何,这是我提出的Gradle脚本。

task buildPluginJar {
    group 'build'
    description 'Builds OpenFire Plugin Jar'
    println 'Clean old libs and classes.'
    delete 'pluginDefinition/lib/*'
    delete 'pluginDefinition/classes/*'
    println 'Copy libs.'
    copy {
        into 'pluginDefinition/lib'
        from configurations.runtime
    }
    println 'Copy classes.'
    copy {
        into 'pluginDefinition/classes'
        from 'build/classes'
    }
    println 'Build jar.'
    String outputPath = 'build/out/' + project.name + '.jar';

    jar {
        into outputPath
        from fileTree('pluginDefinition/').include('**/*').collect { zipTree it }
    }
}

我设法让文件复制工作,但它应该把它全部放入信号罐的结束是不行的。它完成但没有jar输出。我做错了什么?

1 个答案:

答案 0 :(得分:0)

我无法弄清楚如何使用Gradle做到这一点。但我确实弄清楚如何使用Intellij构建罐子。我按照本教程: http://blog.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/

我浏览了文件&gt; “项目结构”菜单并添加了两个工件。一个用我的pluginDefinition / lib文件夹中的所有java代码构建jar,另一个构建一个jar,其中包含我可以在我的Openfire服务器上安装的pluginDefinition文件夹的全部内容。

尽管如此,如果我能用Gradle做到这一点会很好。