在本教程中,我会创建一个用来测试相关命令的插件项目。这篇文件中出现的代码我已经放到github[1]中,地址在文章的最下方,如果需要可以自行获取。
1.创建插件框架
- 打开终端并导航到之前创建好的工作目录
confluence-plugin-tutorial
。 - 运行以下命令创建Confluence插件框架。
atlas-create-confluence-plugin
- 根据提示输入对应的groupId、artifactId、version和package信息,并输入
Y
以确认。
Define value for groupId: : com.jenseny.confluence.tutorial
Define value for artifactId: : atlas-cli
Define value for version: 1.0.0-SNAPSHOT: :
Define value for package: com.jenseny.confluence.tutorial: :
Confirm properties configuration:
groupId: com.jenseny.confluence.tutorial
artifactId: atlas-cli
version: 1.0.0-SNAPSHOT
package: com.jenseny.confluence.tutorial
Y: : y
- 把项目导入到IDE中,我这边使用
idea
。
2.atlas-create-confluence-plugin命令
atlas-create-confluence-plugin [options]
用于创建Confluence
插件框架。参数有:artifact-id
,group-id
,version
,package
,non-interactive
。它会根据我们填写的参数生成一个插件项目,如果在使用命令的时候不填写参数,之后会有交互模式提示我们输入对应的参数。当然我们也可以在使用命令的时候直接填写好参数。
完整参数 | 缩写 | 描述 |
---|---|---|
--artifact-id | -a | 项目名称。它对应于Maven artifactId。如果不输入此值,脚本将提示您输入该值。 |
--group-id | -g | 对应于Maven groupId。如果不输入此值,脚本将提示您输入该值。 |
--version | -v | 插件版本。默认值为1.0-SNAPSHOT。如果不输入此值,脚本将提示您输入该值。 |
--package | -p | 插件源代码的Java软件包的名称。默认值为之前设置的group-id。 |
--non-interactive | 无 | 如果存在此参数(该参数没有值),则交互模式将关闭,因此脚本不会提示用户输入。在这种情况下,如果不提供artifact-id和group-id脚本将失败。 |
3.atlas-run命令
atlas-run [options]
运行一个安装了该插件的Confluence
。参数有:version
,container
, http-port
,ajp-port
,context-path
,server
,jvmargs
,log4j
,test-version
,sal-version
,rest-version
,plugins
,lib-plugins
,bundled-plugins
,product
。我们找几个常用的参数来介绍下它的作用。
完整参数 | 缩写 | 描述 |
---|---|---|
-version | -v | 指定要运行的Confluence版本。默认为RELEASE。 |
--container | -c | 要运行的容器。当前默认为tomcat9x。其他可用值是tomcat5x,resin3x和jboss42x。 |
--http-port | -p | Servlet容器的HTTP端口。默认值1990。当您要启动两个Confluence实例时,可以通过该参数设置不同的端口 |
--ajp-port | -ajp | Servlet容器的AJP端口。当您要启动两个Confluence实例时,可以通过该参数设置不同的端口 |
--context-path | 无 | 应用程序上下文路径。需要包括前导斜杠。例如,如果您的应用程序在http://localhost:1990/confluence上运行则应输入/confluence。要在http://localhost:1990中运行则应输入ROOT。 |
--server | 无 | 应用程序服务器的主机名。默认值为localhost。 |
--jvmargs | 无 | 添加一些JVM参数 |
4.atlas-create-confluence-plugin-module命令
atlas-create-confluence-plugin-module
命令提示您选择需要的插件模块类型,然后创建一个Confluence插件模块示例,您可以对其进行调整以适应自己的插件需求。目前支持的模块类型如下。
Choose Plugin Module:
1: Blueprint
2: Component Import
3: Component
4: Keyboard Shortcut
5: Downloadable Plugin Resource
6: Gadget Plugin Module
7: Licensing API Support
8: Module Type
9: REST Plugin Module
10: Servlet Context Listener
11: Servlet Context Parameter
12: Servlet Filter
13: Servlet
14: Template Context Item
15: Web Item
16: Web Panel
17: Web Panel Renderer
18: Web Resource
19: Web Resource Transformer
20: Web Section
Choose a number (1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/17/18/19/20):
5.其它命令
- atlas-clean
从插件项目中移除生成的文件,类似于Maven
的mvn clean
命令。
- atlas-compile
编译插件项目源码。类似于Maven
的mvn compile
命令。
- atlas-package
打包插件项目件并生成插件包(jar和obr)。类似于Maven
的mvn package
命令。
- atlas-mvn
允许您使用与Atlassian Plugin SDK
捆绑在一起的Maven
版本的任何Maven
命令。例如atlas-mvn clean package
- atlas-run-standalone
独立运行应用程序,不需要依赖插件项目。
假设您想快速启动Confluence
实例,而无需事先创建Confluence
插件项目。直接在命令行中键入以下命令即可:
atlas-run-standalone --product confluence
6.使用QuickReload自动重新安装插件
QuickReload
是Atlassian
插件,可显着减少插件开发的迭代时间。
- 通过
atlas-create-confluence-plugin
命令创建的项目默认已经开启了QuickReload
。我们可以看到pom.xml
插件部分为
true
。
com.atlassian.maven.pluginsconfluence-maven-plugin${amps.version}true${confluence.version}${confluence.data.version}true
- 当我们使用
atlas-run
运行Confluence
之后,如果对插件进行了代码改动,可以新建一个控制台,切换到插件的工作空间执行atlas-mvn package
命令,它将会帮我们自动重新安装修改后的插件。 - 切换回第一个控制台,如果看到类似日志代表插件已经重新安装。
[INFO] [talledLocalContainer] Starting Quick Reload - '/Users/wanglongchao/workspace/code/backend/github/confluence-plugin-tutorial/atlas-cli/target/atlas-cli-1.0.0-SNAPSHOT.jar'....
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] 2020-08-23 21:51:35,497 INFO [QuickReload - Plugin Installer] [atlassian.plugin.manager.DefaultPluginManager] disablePlugins Found dependent enabled plugins for plugins '[com.jenseny.confluence.tutorial.atlas-cli]': [com.jenseny.confluence.tutorial.atlas-cli-tests(MANDATORY)]. Disabling...
[INFO] [talledLocalContainer] 2020-08-23 21:51:35,498 INFO [QuickReload - Plugin Installer] [atlassian.plugin.manager.DefaultPluginManager] broadcastPluginDisabling Disabling com.jenseny.confluence.tutorial.atlas-cli-tests
[INFO] [talledLocalContainer] 2020-08-23 21:51:35,598 INFO [QuickReload - Plugin Installer] [atlassian.plugin.manager.DefaultPluginManager] addPlugins Found mandatory, optional and dynamically dependent plugins to re-enable after plugin upgrade 'com.jenseny.confluence.tutorial.atlas-cli': [com.jenseny.confluence.tutorial.atlas-cli-tests]. Enabling...
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,340 INFO [QuickReload - Stable File Watcher] [plugins.quickreload.install.PluginInstaller] info 'atlas-cli-1.0.0-SNAPSHOT-tests.jar' now appears to be stable (1611247 bytes)
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,340 INFO [QuickReload - Stable File Watcher] [plugins.quickreload.install.PluginInstaller] info 'atlas-cli-1.0.0-SNAPSHOT-tests.jar' is indeed an Atlassian plugin and will be installed shortly...
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,343 INFO [QuickReload - Plugin Installer] [atlassian.plugin.manager.DefaultPluginManager] updatePlugin Updating plugin 'com.jenseny.confluence.tutorial.atlas-cli' from version '1.0.0-SNAPSHOT' to version '1.0.0-SNAPSHOT'
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,344 INFO [QuickReload - Plugin Installer] [atlassian.plugin.manager.DefaultPluginManager] broadcastPluginDisabling Disabling com.jenseny.confluence.tutorial.atlas-cli
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,357 WARN [Gemini Blueprint context shutdown thread 1] [confluence.tutorial.atlas-cli.spring] destroy
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] Spring context destroyed : com.jenseny.confluence.tutorial.atlas-cli id(288) v(1.0.0.SNAPSHOT)
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] 2020-08-23 21:51:36,469 WARN [ThreadPoolAsyncTaskExecutor::Thread 25] [confluence.tutorial.atlas-cli.spring] afterPropertiesSet
[INFO] [talledLocalContainer] Spring context started for bundle : com.jenseny.confluence.tutorial.atlas-cli id(295) v(1.0.0.SNAPSHOT) file:/Users/wanglongchao/workspace/code/backend/github/confluence-plugin-tutorial/atlas-cli/target/confluence/home/plugins-cache/1598190695440atlas-cli-1.0.0-SNAPSHOT.jar
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] If you want to debug the Spring wiring of your code then set a DEBUG level log level as follows. [ This is a dev.mode only message. ]
[INFO] [talledLocalContainer] log4j.logger.com.jenseny.confluence.tutorial.atlas-cli.spring = DEBUG, console, filelog
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] 2020-08-23 21:51:38,128 INFO [QuickReload - Plugin Installer] [plugins.quickreload.install.PluginInstallerMechanic] installPluginImmediately
[INFO] [talledLocalContainer] ^
[INFO] [talledLocalContainer] |
[INFO] [talledLocalContainer] |
[INFO] [talledLocalContainer] |
[INFO] [talledLocalContainer] |
[INFO] [talledLocalContainer] |
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] If Maven was a horse, you would shoot it, make it into dog food, feed it to a dog, and then shoot that just to be certain!
[INFO] [talledLocalContainer]
[INFO] [talledLocalContainer] Quick Reload Finished (2131 ms) - 'atlas-cli-1.0.0-SNAPSHOT.jar'
以上就是关于日常开发
Confluence
插件需要用到的一些命令,它们可以提高我们开发插件的效率。下一章我来为你介绍通过开发插件将页面的一些信息(点赞数,评论数和页面当前版本号)添加到页面横幅中。
参考资料
[1]Confluence插件代码仓库: https://github.com/jenseny/confluence-plugin-tutorial.git