Eclipse Plugin Projekt, Maven Projekt und dependencies

elischa

Mitglied
Hallo Leute,
ich möchte ein Eclipse Plugin erstellen und dabei auf Maven Funktionalität zurückgreifen, beides funktioniert einzeln. Aber ich komme nicht drauf wie man beides verbindet.
Unter diesem Link habe ich gefunden wie man bei Maven Projekten die Plugin Funktionalität hinzufügt, weiß aber nicht wo ich den <plugin></plugin> Absatz einfügen soll.
http://maven.apache.org/plugins/maven-eclipse-plugin/pde.html
In der pom.xml wirft er mir einen Fehler, wenn ich's versuche einzufügen, und die effective pom kann ich nicht bearbeiten. Würde mich über einen Tip freuen.
Besten Dank im Voraus.
 
In deiner root-pom unter

Code:
<build>
<pluginManagement>
  <plugins>
     <plugin>
          .... (hier dein Plugin für pde)
    </plugin>
  </plugin>
</pluginManagement>
</build>
 
ahh wunderbar thx@StarSheriff, das hat geklappt...man muss nur komischerweise vom Plugin Project ausgehen und dann convert to Maven Project und dann unbedingt 2 mal hintereinader builden. Nach dem ersten build kriegt man ein fail und dann ein sucess und dann sind alle Funktionen quasi da.

edit...
wenn man eclipse:eclipse als goal einträgt löscht er sofort alle Plugin Dependencies komischerweise...habe als goal install 2 x hintereinander ausgeführt und funzt wunderbar....auch runAs Eclipse Application ist vorhanden und läuft...
 
Zuletzt bearbeitet:
hmm das builden 2x hintereinader funktioniert wie's aussieht auch ohne dem zusätzlichen Absatz aus dem Link, außerdem löscht er mir nach ausführen von eclipse:eclipse die Plugin dependencies und der Absatz weiter unten im Link funktioniert iwie nicht wegen den <execution>

Ich habe jetzt folgendes Problem, wenn ich mein Plugin teste mit runAs...Eclipse Application sieht die innere Eclipse Instanz nur die JavaStandard Library und meine geschriebenen Kommunikationsklassen, die er ausführt, die aber auf externe libs zugreifen. Also ich möchte quasi mit dem externen JIRA Rest Client requests absetzen und er wirft mir in meinem Plugin folgende Meldung:
Exception in thread "Thread-7" java.lang.NoClassDefFoundError: com/atlassian/jira/rest/client/internal/async/AsynchronousJiraRestClientFactory

Ich habe in der pom.xml
folgendes drin:
Code:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>plugin01</groupId>
  <artifactId>plugin01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>plugin01</name>
  <url>http://maven.apache.org</url>
 
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
   
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
     
     
    </plugins>
  </build>
 
 
  <repositories>
         <repository>
           <id>atlassian-public</id>
           <url>https://m2proxy.atlassian.com/repository/public</url>
           <snapshots>
             <enabled>true</enabled>
             <updatePolicy>daily</updatePolicy>
             <checksumPolicy>warn</checksumPolicy>
           </snapshots>
           <releases>
             <enabled>true</enabled>
             <checksumPolicy>warn</checksumPolicy>
           </releases>
         </repository>
     </repositories>
    
     <pluginRepositories>
         <pluginRepository>
           <id>atlassian-public</id>
           <url>https://m2proxy.atlassian.com/repository/public</url>
           <releases>
             <enabled>true</enabled>
             <checksumPolicy>warn</checksumPolicy>
           </releases>
           <snapshots>
             <checksumPolicy>warn</checksumPolicy>
           </snapshots>
         </pluginRepository>
       </pluginRepositories>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>   
   
     <dependency>
<!-- import com.atlassian.jira.rest.client.internal.async.AsynchronousJiraRestClientFactory; -->
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-java-client-core</artifactId>
            <version>2.0.0-m25</version>
             </dependency>
 <dependency>
<!-- import com.atlassian.jira.rest.client.api.JiraRestClient; -->
<!-- import com.atlassian.jira.rest.client.api.JiraRestClientFactory; -->
<!-- import com.atlassian.jira.rest.client.api.domain.BasicProject; -->
            <groupId>com.atlassian.jira</groupId>
            <artifactId>jira-rest-java-client-api</artifactId>
            <version>2.0.0-m25</version>
             </dependency>
            
  </dependencies>
 
 
 
 
 
 
</project>

In der äußeren Eclipse Instanz läuft das Build sauber durch, meine KommunikationsKlasse(da verwende ich den Client und Factory und setze requests ab) läuft wunderbar zum schnellen testen außerhalb mit runAs...Java Application. Nur im Eclipse Plugin selbst laufen die requests dann nicht mehr wegen oberen ClassNotFound Error. Wie schaffe ich nun im inneren Eclipse Plugin die JIRA Client Klassen zu verwenden. Wie gesagt außerhalb zeigt er mir keine Fehler an. Vielleicht habt ihr noch ein paar Tipps.
Danke.
 
Zuletzt bearbeitet:
Das Anlegen scheint jetzt doch einigermaßen zu klappen:

- PluginProject HelloWorld Template erstellen
- Convert to Maven Project
- in die pom.xml die repositories und dependencies von jira einfügen
- pde enable, alle anderen plugins auch rein

- bei "execution" fehler: pluginManagement und lifecycle-mapping tags einfügen,
siehe hier: http://stackoverflow.com/questions/...-covered-by-lifecycle-configuration-for-sprin

Code:
<build>
      ... various plugins ...

      <pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse
                m2e settings only. It has no influence on the Maven build itself. -->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.codehaus.mojo</groupId>
                                    <artifactId>aspectj-maven-plugin</artifactId>
                                    <versionRange>[1.0,)</versionRange>
                                    <goals>
                                        <goal>test-compile</goal>
                                        <goal>compile</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

- in der SampleAction o.a. die neuen libs benutzen
- dann Maven...build mit goal: "eclipse:eclipse -U"
- Project properties -> add Libs -> add Plugin-Libs
- plugin.xml -> Runtime -> Classpath -> add.. -> den Inhalt von /lib
 

Zurück
Oben