我是JIRA插件开发的新手,所以我的问题听起来可能太容易了,但请耐心一点,仔细阅读,因为我已经尝试了很多东西,在互联网上找到了,但没有一个能够工作。这就是为什么我在这里问它,作为我最后的希望。
我想在我的JIRA插件中使用JIRA REST Java Client。直接instructions建议将以下内容添加到我的pom.xml中,一切都应该有效:
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-java-client</artifactId>
<version>1.1-m02</version>
</dependency>
但当然,它没有,因为在Eclipse中,atlas-mvn eclipse:eclipse
之后一切都很好(没有任何错误/警告),但是当我使用atlas-run
或atlas-debug
运行JIRA时,一旦我尝试访问该行:
JerseyJiraRestClientFactory f = new JerseyJiraRestClientFactory();
我收到例外java.lang.NoClassDefFoundError: com/atlassian/jira/rest/client/internal/jersey/JerseyJiraRestClientFactory
我再说一遍,在Eclipse中,一切都显示正常,没有一个警告/错误标记,但在运行时,我得到了异常。
推荐给我的解决方案是将all the needed dependencies添加到我的pom.xml中,但是由于有很多例外,我甚至无法正常启动JIRA(如果需要)。
所以,简单的问题是如何正确地做到这一点?更好的是,有没有人提供pom.xml文件+ src /文件夹的任何简单的WORKING示例,所以我可以弄清楚我在哪里错了?
非常感谢。
答案 0 :(得分:4)
如jrjc-example-client repository中所述,当前版本的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>
答案 1 :(得分:2)
这可能不是您问题的直接答案,但可能会为您提供正确方向的一些线索。
JIRA挥舞双刃剑,即OSGI容器。在部署时,在本地环境中开发时看起来很好的东西炸弹。从OSGI的角度来看,你可能有幸找到了一些东西。去过那里,已被烧过几次。 HTH。