2013-07-26 11 views
5

Ich bin neu mit JIRA-Plugin-Entwicklung, so meine Frage klingt vielleicht zu einfach, aber bitte gedulden Sie sich und lesen Sie es sorgfältig, weil ich so viele Dinge ausprobiert habe, im Internet gefunden, und keiner von ihnen funktioniert. Deshalb frage ich es hier, als meine letzte Hoffnung.Wie kann JIRA REST Java Client in ein JIRA-Plugin eingebunden werden?

Ich möchte in meinem JIRA-Plugin verwenden. Die straight forward instructions schlagen folgende in meine pom.xml und alles funktionieren sollte hinzufügen: aber natürlich

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

, es funktioniert nicht, weil in Eclipse, alles zeigt in Ordnung (ohne Fehler/Warnungen) nach atlas-mvn eclipse:eclipse, aber wenn ich laufen JIRA mit atlas-run oder atlas-debug, sobald ich versuche, die Linie zuzugreifen:

JerseyJiraRestClientFactory f = new JerseyJiraRestClientFactory(); 

ich die Ausnahme erhalten java.lang.NoClassDefFoundError: com/atlassian/jira/rest/client/internal/jersey/JerseyJiraRestClientFactory

ich wiederhole, In Eclipse zeigt sich alles in Ordnung, ohne eine einzige Warnung/Fehlermarkierung, aber zur Laufzeit bekomme ich diese Ausnahme. Die Lösung, die mir empfohlen wurde, bestand darin, all the needed dependencies in meine pom.xml hinzuzufügen, was ich tat, aber dann konnte ich JIRA aufgrund vieler Ausnahmen (die bei Bedarf bereitgestellt werden) normalerweise nicht starten.

Also, einfache Frage ist, wie man das richtig macht? Noch besser, hat irgendjemand irgendein einfaches WORKING-Beispiel für die pom.xml-Datei + src/-Ordner zur Verfügung, damit ich herausfinden kann, wo ich mich irreführe?

Vielen Dank im Voraus.

Antwort

3

Da die aktuelle Version von JRJC im jrjc-example-client repository erwähnt ist 2.0 und eine wichtige Sache ist in sofern pom.xml Datei erwähnt:

„JIRA bietet bereits eine Reihe von Abhängigkeiten, die JRJC brauchen Wir brauchen. um sie aus der JRJC-Abhängigkeit auszuschließen, da wir sie nicht in das Plugin packen wollen. "

so ist die Lösung, diese Dinge aus der JRJC Abhängigkeit auszuschließen:

<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> 
2

Dies kann nicht eine direkte Antwort auf Ihre Frage, aber können Sie einige führt in die richtige Richtung geben.

JIRA besitzt ein zweischneidiges Schwert, den OSGI-Container. Dinge, die bei der Entwicklung in Ihrer lokalen Umgebung gut aussehen, bombardieren Sie bei der Bereitstellung. Vielleicht haben Sie Glück, Dinge aus der OSGI-Perspektive zu verfolgen. Dort gewesen, wurden einige Male verbrannt. HTH.