2017-03-07 3 views
0

Ich habe ein Plug-in-Fragment, das eine JAR-Datei zum Host-Plug-in nach these instructions. Er erstellt eine Datei library.jar, die in build.properties angegeben ist und einem Verzeichnis zugeordnet ist, das die zu erstellende Quelle enthält.Eclipse-RCP-Fragment Erstellen von library.jar

Es funktioniert alles wie erwartet, außer ich kann nicht herausfinden, wie zu verursachen library.jar in Eclipse erstellt werden. Wenn ich einen Maven-Build ausführe, der auf mein Fragmentprojekt verweist und es als Modul enthält, wird die Datei library.jar im Projektverzeichnis angezeigt. Das Erstellen oder Bereinigen des Projekts in Eclipse erstellt die Datei jedoch nicht.

Ich möchte andere Entwickler in der Lage sein, library.jar in ihrem Eclipse-Arbeitsbereich zu generieren, ohne den Maven-Build auszuführen. Ich bin wirklich überrascht, dass der Maven-Build libary.jar im Plug-in-Projekt selbst erzeugt und nicht nur in dem Produkt, das im Build-Ziel erstellt wurde. Es sollte einen Weg geben, Eclipse dazu zu bringen, dies zu tun, ohne den Maven-Build auszuführen.

EDIT:

build.properties:

bin.includes = META-INF/,\ 
       library.jar 
source.library.jar = src/ 

MANIFEST.MF:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Custom 
Bundle-SymbolicName: org.python.pydev.custom 
Bundle-Version: 1.0.0.qualifier 
Fragment-Host: org.python.pydev;bundle-version="5.1.2" 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Eclipse-PatchFragment: true 
Bundle-ClassPath: library.jar, 
. 
Require-Bundle: org.python.pydev.debug;bundle-version="5.5.0", 
org.eclipse.cdt.debug.core;bundle-version="8.0.0", 
org.apache.log4j 

Antwort

0

Eclipse die library.jar bauen, anstatt die Klassendateien in der normalen Stelle setzen, wenn Die Datei build.properties sieht so aus:

bin.includes = META-INF/,\ 
       library.jar 
source.library.jar = src/ 

Der Eintrag library.jar in bin.includes ersetzt den normalen . Eintrag.

Der Eintrag source.library.jar besagt, dass die Java-Dateien in der src direkt in die library.jar gelegt werden sollen.

Der Bundle-Classpath Eintrag in Ihrem MANIFEST.MF sein sollte:

Bundle-ClassPath: library.jar 

(also keine Eintragung '')

+0

Danke, aber das ist genau das, was ich in build.properties haben. Es gibt eine Warnung für die Klasse. Enthält einen Eintrag, der besagt: Die Klassenpfadbibliothek des Plug-ins '.' hat keinen entsprechenden Source-Build-Eintrag. Ist das ein Ablenkungsmanöver? Mein .classpath ist identisch mit anderen Projekten konfiguriert, wo diese Warnung nicht angezeigt wird. Ist es anders, weil es ein Fragment ist? Ich folgte den Anweisungen hier (http://blog.ankursharma.org/2009/11/source-and-output.html) ohne Erfolg. – MidnightJava

+0

Ich habe auch viele Dinge in build.properties versucht, zum Beispiel "output.library.jar =.". Dann klagt es:/ist kein Ausgabeordner. Aber ich dachte, ich würde es sagen, um das zu einem Ausgabeordner zu machen. – MidnightJava

+0

Sie müssen wahrscheinlich den Bundle-Classpath korrekt in der MANIFEST.MF festlegen - siehe aktualisierte Antwort –