记录一次使用maven插件构建openfire插件的全部过程
因为项目需要, 故把openfire源码下载下来修改发布, 期间要使用自己编写的openfire插件, 最新版的openfire使用maven构建, 故插件的项目构建方式也使用了maven, openfire的插件目录结构非常特殊, 点我了解更多, 需要个性化 的maven配置才能生成可用的插件jar
项目结构
<code>project/ |- pom.xml |- plugin.xml |- readme.html |- changelog.html |- logo_small.gif |- logo_large.gif |- src |- main |- java(source dir) |- web/<code>
构建过程
首先把src-main下的java设置成source root文件夹, 使下面的类可以引用jdk环境, 编写好代码之后, 直接编写pom文件, 用maven插件去定义生成好的jar包内部结构
<code>爬坑1: 与src平级的几个文件不能打进jar包, 因为顶级文件夹并不是resources文件夹 解决1: 使用maven-resources插件, 指定resource位置, 与在jar里的位置, 也可以直接在build标签下使用resources标签声明, 这是maven的约定写法, 不过我还是声明了插件 爬坑2: 仔细看openfire插件结构, 可以看到, 插件jar里面有个lib文件夹, lib下存放的jar才是真正java代码打包好的文件, 我一开始想着使用resources插件, 把打包好的jar重复放进jar里(相当于向自己里放了个自己), 后来证明是矛盾的, 而且是不好使的 解决2: 使用ant插件, 定义最终的jar结构, 并且配置maven-jar, 只编译java类, 其余组织的工作交给ant插件做 /<code>
pom文件(附说明)
<code> 4.0.0 plugins org.igniterealtime.openfire 4.4.2 com.gomyck openfire-plugin-gomyck-sendmessage Openfire Plugin Gomyck Sendmessage 消息插件 UTF-8 gomyck-sendMessage org.apache.maven.plugins maven-compiler-plugin 3.5.1 1.8 1.8 ${project.build.sourceEncoding} org.apache.maven.plugins maven-jar-plugin 3.1.0 **/com/gomyck/** ${project.build.directory} org.apache.maven.plugins maven-resources-plugin 3.1.0 install resources ${project.basedir} true changelog.html logo_large.gif logo_small.gif plugin.xml readme.html ${project.basedir}/src/main/web web maven-antrun-plugin 1.3 install run /<code>
ant文档地址(所有的ant构建命令可在此查看)
点击前往
个人博客 点击前往