为Jira插件添加依赖项

时间:2018-07-04 14:57:37

标签: java maven jira jira-plugin

使用SDK 6.3.10,我正在尝试为Jira 7.x开发一个插件。

此插件应使用名为“ svnkit”的外部Java依赖项。我将其添加为pom中的依赖项(如果我正确理解了https://developer.atlassian.com/server/framework/atlassian-sdk/managing-dependencies/,就足够了)

<dependency>
  <groupId>com.svnkit</groupId>
  <artifactId>svnkit</artifactId>
  <version>1.1.0</version>
</dependency>

现在,我在atlas-run日志中收到了消息:

[INFO] [talledLocalContainer] 2018-07-04 16:50:55,310 http-nio-2990-exec-3 ERROR anonymous 1010x2x1 - 0:0:0:0:0:0:0:1 /secure/DemoAction!default.jspa [c.a.j.web
.dispatcher.JiraWebworkActionDispatcher] Exception thrown from action 'DemoAction!default', returning 404
[INFO] [talledLocalContainer] WebworkConfigurationNotFoundException{class=class webwork.config.XMLActionConfiguration, message='No such view mapping', name='Dem
oAction.actionRoles.actionRoles'}

插件本身在浏览器中返回404页面。没有svnkit,一切都可以在浏览器中运行。请注意,我没有在Java代码中使用svnkit。

我丝毫不知道此消息的含义或寻找补救措施的线索。

1 个答案:

答案 0 :(得分:0)

首先,您需要确切地知道在何处使用svnkit库,以及该库在您的项目中的用途是什么。根据您提供的信息,我只能远程指导您找到正确的解决方案。

在JIRA / OSGI世界中,您基本上有两种选择:

  1. 您将库与代码一起编译,以使atlas-packagemvn package)的结果是将您项目的字节码和所使用的库的字节码打包到JAR文件中。为了清楚起见,我跳过了其他任何资源。
  2. 您编译了项目,但是最终的JAR仅包含项目的字节码以及显式信息,即依赖的库将在启动JAR的环境中已经存在。

在您的情况下,我认为您要运行插件/ JAR的svnkit库在JIRA中不存在。这意味着,您需要自己提供它。漂亮/推荐的方式是:

  1. 准备svnkit以准备好OSGI,JAR必须是有效的OSGI软件包。 (您可以在Atlassian Maven存储库中的某个位置或Internet的某个位置找到已经准备好的捆绑包)
  2. 在您的pom.xml中添加范围为provided的此依赖项:例如:

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
        <scope>provided</scope>
    </dependency>
    
  3. maven-amps-pluginmaven-jira-plugin)添加配置以将svnkit打包为OSGI捆绑包依赖项

    <build>
        <plugins>
            <plugin>
                <groupId>com.atlassian.maven.plugins</groupId>
                <artifactId>maven-jira-plugin</artifactId>
                <version>${amps.version}</version>
                <configuration>
                    <extractDependencies>false</extractDependencies>
                    <pluginDependencies>
                        <pluginDependency>
                            <groupId>...</groupId>
                            <artifactId>...</artifactId>
                        </pluginDependency>
                    </pluginDependencies>
                ...
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    这样,atlas-package还将产生一个OBR文件,其中将包含您的项目JAR加上svnkit捆绑包 也可以看看: https://developer.atlassian.com/server/framework/atlassian-sdk/bundling-extra-dependencies-in-an-obr/

请注意:

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
    </dependency>

与以下内容完全相同:

    <dependency>
        <groupId>com.svnkit</groupId>
        <artifactId>svnkit</artifactId>
        <version>1.1.0</version>
        <scope>compile</scope>
    </dependency>

这意味着svnkit将直接或间接包含在您的JAR中(JAR中的JAR)

另一方面,您的日志指出您错误配置了DemoAction。如果您同时提供pom.xmlatlassian-plugin.xml,以使我们更好地了解您的问题,那就更好了。