openfire(maven版)导入idea并开发插件

使用的openfire4.5版本,idea2019.3

一:导入idea:

1.先要提前安装好jdk和maven,并配置好环境变量

2.在idea中配置maven,jdk可以导入后再配置

3.要用import project,网上找了好多都是用open打开,我使用open打开后,maven没生效,后续步骤都做不了

.

4.选择

5.选择maven,点击finish,会自动加载pom.xml文件,然后就是漫长的等待期,下载各种东西。

6.加载完是这个样子算成功了

7.按照readme文档中操作

IntelliJ IDEA:

  1. Run -> Edit Configurations... -> Add Application
  2. fill in following values
    1. Name: Openfire
    2. Use classpath of module: starter
    3. Main class: org.jivesoftware.openfire.starter.ServerStarter
    4. VM options (adapt accordingly):
      -DopenfireHome="-absolute path to your project folder-\distribution\target\distribution-base" 
      -Xverify:none
      -server
      -Dlog4j.configurationFile="-absolute path to your project folder-\distribution\target\distribution-base\lib\log4j2.xml"
      -Dopenfire.lib.dir="-absolute path to your project folder-\distribution\target\distribution-base\lib"
      -Dfile.encoding=UTF-8
      
    5. Working directory: -absolute path to your project folder-
  3. apply

    完成后效果

           

8.修改编码,参照https://blog.csdn.net/m0_38132361/article/details/80628203,将相关编码都修改为UTF-8,不然后面的汉字都是乱码

9.继续按照readme文档,在Terminal中执行mvnw verify

10.执行成功后,就可以点击

11.之后就可以复制管理平台监听后面的网址,在浏览器打开

 

二:插件开发

新建一个maven项目,next后填写项目名称,finish

2.在openfire的项目中,右边Maven中+号,选择刚才新建的插件项目的pom.xml

3.修改pom.xml文件

官网上http://download.igniterealtime.org/openfire/docs/latest/documentation/plugin-dev-guide.html,从这点击进去的示例,用了一下,不行,打包的jar文件中少很多东西

换一种方法,在openfire github网站https://github.com/igniterealtime 上找一个插件,下载下来,将插件项目中的红框中的文件都拷贝给自己的插件,进行修改

如下是我自己改造完成后的

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>plugins</artifactId>
        <groupId>org.igniterealtime.openfire</groupId>
        <version>4.5.5-SNAPSHOT</version>
    </parent>
    <groupId>org.igniterealtime.openfire.plugins</groupId>
    <artifactId>userMucList</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>userMucList</name>
    <description>User MUC list plugin.</description>

    <build>
        <sourceDirectory>src/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.6</version>
                <dependencies>
                    <dependency>
                        <groupId>org.igniterealtime.openfire.plugins</groupId>
                        <artifactId>openfire-plugin-assembly-descriptor</artifactId>
                        <version>${openfire.version}</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <appendAssemblyId>false</appendAssemblyId>
                            <finalName>${project.artifactId}</finalName>
                            <attach>false</attach>
                            <descriptorRefs>
                                <descriptorRef>openfire-plugin-assembly</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <!-- Where dependencies are obtained (such as the parent project). -->
        <repository>
            <id>igniterealtime</id>
            <name>Ignite Realtime Repository</name>
            <url>https://igniterealtime.org/archiva/repository/maven/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <!-- Typically used to retrieve Maven plugins that are used by this project.
             This apparently is also used to botain the dependencies _used by_ these
             plugins (such as the openfire-plugin-assembly-descriptor, needed to
             package the project as an Openfire plugin!) -->
        <pluginRepository>
            <id>igniterealtime</id>
            <name>Ignite Realtime Repository</name>
            <url>https://igniterealtime.org/archiva/repository/maven/</url>
        </pluginRepository>
    </pluginRepositories>
</project>

plugin.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<plugin>
    <class>com.muclist.MUCListPlugin</class>
    <name>userMucList</name>
    <description>User MUC list plugin.</description>
    <author>xxxxxxx</author>
    <version>${project.version}</version>
    <date>1/9/2021</date>
    <minServerVersion>4.5.0</minServerVersion>

</plugin>

 

4.打包:先点clean,再点install

打包成功

 

 版本号后面不带-SNAPSHOT,打jar包时会报错,不知道为什么

 

5.检查打包好的jar文件,这个名称一定要与pom.xml中的artifactId一致,

将jar包放入   openfire代码的路径\distribution\target\distribution-base\plugins目录下。重新已debug模式启动就可以了。

 

6.实际部署使用时,将jar包放入openfire安装路径下的plugins文件夹下


版权声明:本文为lhy24680原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。