5

我是 JIRA 插件开发的新手,所以我的问题可能听起来太简单了,但请耐心等待并仔细阅读,因为我尝试了很多东西,在互联网上找到了,但都没有奏效。这就是为什么我在这里问它,作为我最后的希望。

我想在我的 JIRA 插件中使用JIRA REST Java 客户端。直接的说明建议将以下内容添加到我的 pom.xml 中,一切都应该正常工作:

<dependency>
    <groupId>com.atlassian.jira</groupId>
    <artifactId>jira-rest-java-client</artifactId>
    <version>1.1-m02</version>
</dependency>

但当然不是,因为在 Eclipse 中,一切都显示正常(没有任何错误/警告)之后,但是当我使用oratlas-mvn eclipse:eclipse运行 JIRA 时,只要我尝试访问该行:atlas-runatlas-debug

JerseyJiraRestClientFactory f = new JerseyJiraRestClientFactory();

我得到了例外java.lang.NoClassDefFoundError: com/atlassian/jira/rest/client/internal/jersey/JerseyJiraRestClientFactory

我重复一遍,在 Eclipse 中,一切正常,没有一个警告/错误标记,但在运行时,我得到了那个异常。

向我推荐的解决方案是将所有需要的依赖项添加到我的 pom.xml 中,但后来我什至无法正常启动 JIRA,因为有很多异常(如果需要,将提供它们)。

所以,简单的问题是如何正确地做到这一点?更好的是,有没有人提供 pom.xml 文件 + src/ 文件夹的任何简单工作示例,所以我可以弄清楚我在哪里弄错了?

提前非常感谢。

4

2 回答 2

4

正如jrjc-example-client 存储库中提到的,JRJC 的当前版本是 2.0,并且在提供的 pom.xml 文件中提到了一件重要的事情:

“JIRA 已经提供了 JRJC 需要的许多依赖项。我们需要将它们从 JRJC 依赖项中排除,因为我们不想将它们打包到插件中。”

因此,解决方案是从 JRJC 依赖项中排除这些内容:

<dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-rest-java-client</artifactId>
        <version>2.0.0-m2</version>
        <!--
        JIRA will already provide a number of dependencies that JRJC needs. We need to exclude them from the
        JRJC dependency as we don't want to package them up inside the plugin.
        -->
        <exclusions>
                <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>joda-time</groupId>
                        <artifactId>joda-time</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-json</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.google.guava</groupId>
                        <artifactId>guava</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.atlassian.sal</groupId>
                        <artifactId>sal-api</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.atlassian.event</groupId>
                        <artifactId>atlassian-event</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>commons-lang</groupId>
                        <artifactId>commons-lang</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>commons-codec</groupId>
                        <artifactId>commons-codec</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                        <groupId>com.sun.jersey</groupId>
                        <artifactId>jersey-core</artifactId>
                </exclusion>
        </exclusions>
</dependency>
于 2013-08-02T08:01:35.510 回答
2

这可能不是您问题的直接答案,但可能会为您提供一些正确方向的线索。

JIRA 使用双刃剑,即 OSGI 容器。在本地环境中开发时看起来不错的东西在部署时会爆炸。从 OSGI 的角度来看,您可能会很幸运地追踪事物。去过那里,被烧过几次。HTH。

于 2013-08-08T05:04:00.873 回答