2014-04-16 5 views
18

Ich habe Eclipse Luna 4.4-M6 installiert. Ich habe versucht, die Google Plugin für Eclipse 4.3 (Kepler) zu installieren, aber Eclipse würde es mir nicht erlauben, es zu installieren.Google Plugin für Eclipse Luna?

Gibt es eine Möglichkeit, es zu erzwingen (zum Beispiel durch das Herunterladen und Bearbeiten einig offenkundigen oder andere) zu installieren? Oder wäre das wegen der Wechsel zwischen 4.3 und 4.4 vergeblich?

+0

Luna ist noch in der Entwicklung (M6 ist eine Milestone-Build), so dass andere Produkte wahrscheinlich noch nicht mit ihm getestet haben. –

+1

Ich verstehe, dass Luna noch in der Entwicklung ist. Ich habe mich gefragt, ob es irgendwie möglich ist, das Plugin zu installieren. Ich bin bereit, dieses Risiko einzugehen. –

+1

Luna ist jetzt offiziell veröffentlicht, jetzt warten wir auf Google! –

Antwort

2

Es stellt sich heraus, es ist eine Möglichkeit, die Manifeste zu ändern, um die Google-Plugin für Kepler zu ermöglichen, in Eclipse Luna zu installieren. Contributor Ze Kritter auf Google Groups hat eine Apache Ant build.xml Datei geschrieben, die die notwendigen Arbeiten durchführt, original here und unten wiedergegeben.

Es funktionierte schön für mich. Ich habe dieses Skript erfolgreich ausgeführt und das Plugin in Luna installiert, und - zumindest für GWT - scheint es wie gewohnt zu funktionieren.

Laut der discussion thread in Google Groups gibt es einige Inkompatibilitäten mit dem Maven-Plugin (ich persönlich benutze Maven nicht) und ein neues und entsprechend gut getestetes Google-Plugin wird in Kürze erscheinen (Ende Juli 2014).

<?xml version="1.0" encoding="UTF-8"?> 

<project name="gpe.4.luna" basedir="." default="update.end"> 
    <property environment="env"/> 

    <property name="project.base.dir" value="."/> 
    <property name="project.temp.dir" value="${project.base.dir}/temp"/> 
    <property name="project.plugin.dir" value="${project.base.dir}/plugin"/> 
    <property name="project.plugins.dir" value="${project.plugin.dir}/plugins"/> 
    <property name="e42.plugin.jar" value="${project.plugins.dir}/com.google.gdt.eclipse.platform.e42_3.6.0.v201406262229-rel-r43.jar"/> 
    <property name="artifacts.jar" value="${project.plugin.dir}/artifacts.jar"/> 
    <property name="content.jar" value="${project.plugin.dir}/content.jar"/> 

    <property name="plugin43.zip" value="com.google.gdt.eclipse.suite.4.3.update.site_3.6.0.zip"/> 
    <property name="plugin44.zip" value="com.google.gdt.eclipse.suite.4.4.update.site_3.6.0.zip"/> 

    <!-- 
     source: http://stackoverflow.com/a/5340557/3747097 
     Loads entries from a manifest file. 

     @jar  The jar from where to read 
     @file A manifest file to read 
     @prefix A prefix to prepend 
     @section The name of the manifest section to load 
    --> 
    <scriptdef name="loadManifest" language="javascript" loaderRef="sharedbuild-loaderRef"> 
     <attribute name="jar" /> 
     <attribute name="file" /> 
     <attribute name="prefix" /> 
     <attribute name="section" /> 
     <![CDATA[ 
      var jarname = attributes.get("jar"); 
      var filename = attributes.get("file"); 
      if (jarname != null && filename != null) { 
       self.fail("Only one of jar or file is required"); 
      } 
      var prefix = attributes.get("prefix"); 
      if (prefix == null) { 
       prefix = ""; 
      } 
      var section = attributes.get("section"); 

      var manifest; 
      if (jarname != null) { 
       var jarfile = new java.util.jar.JarFile(new java.io.File(jarname)); 
       manifest = jarfile.getManifest(); 
      } else if (filename != null) { 
       manifest = new java.util.jar.Manifest(new java.io.FileInputStream(new java.io.File(filename))); 
      } else { 
       self.fail("One of jar or file is required"); 
      } 

      if (manifest == null) { 
       self.log("No manifest in " + jar); 
      } else { 
       var attributes = (section == null) ? manifest.getMainAttributes() : manifest.getAttributes(section); 
       if (attributes != null) { 
        var iter = attributes.entrySet().iterator(); 
        while (iter.hasNext()) { 
         var entry = iter.next(); 
         // self.log("key " + entry.getKey()); 
         // self.log("value " + entry.getValue()); 
         project.setProperty(prefix + entry.getKey(), entry.getValue()); 
        } 
       } 
      } 
     ]]> 
    </scriptdef> 

    <!-- 
     source: http://giorgio-ferrara.blogspot.ru/2010/09/apache-ant-how-to-search-and-replace.html 
    --> 
    <macrodef name="replaceStringWithRegExp"> 
     <attribute name="string"/> 
     <attribute name="searchPattern"/> 
     <attribute name="replacementPattern"/> 
     <attribute name="property"/> 
     <sequential> 
      <tokens id="id"> 
       <concat> 
       <string value="@{string}"/> 
       <filterchain> 
        <tokenfilter> 
         <replaceregex pattern="@{searchPattern}" 
            replace="@{replacementPattern}" 
            flags="g"/> 
        </tokenfilter> 
       </filterchain> 
       </concat> 
      </tokens> 
      <property name="@{property}" value="${toString:id}"/> 
     </sequential> 
    </macrodef> 

    <target name="clean"> 
     <delete dir="${project.temp.dir}"/> 
     <delete dir="${project.plugin.dir}"/> 
     <delete file="${plugin44.zip}"/> 
    </target> 

    <target depends="clean" name="init"> 
     <mkdir dir="${project.temp.dir}"/> 
    </target> 

    <target depends="init" name="check.source"> 
     <condition property="plugin-not-found"> 
      <not> 
       <available file="${plugin43.zip}"/> 
      </not> 
     </condition> 
    </target> 

    <target depends="check.source" name="get.source" if="${plugin-not-found}"> 
     <get src="https://commondatastorage.googleapis.com/eclipse_toolreleases/products/gpe/release/3.6.0/4.3/com.google.gdt.eclipse.suite.4.3.update.site_3.6.0.zip" dest="."/> 
    </target> 

    <target depends="check.source, get.source" name="unzip.source"> 
     <unzip src="${plugin43.zip}" dest="${project.plugin.dir}"/> 
    </target> 

    <target depends="unzip.source" name="update.manifest"> 
     <checksum file="${e42.plugin.jar}" property="original.md5"/> 
     <loadManifest jar="${e42.plugin.jar}" prefix="e42.mf."/> 
     <replaceStringWithRegExp string="${e42.mf.Require-Bundle}" 
      searchPattern="(.*);bundle-version=&quot;\[3.8.0,3.10.0\)&quot;(.*)" 
      replacementPattern="\1\2" 
      property="Require-Bundle"/> 
     <!-- 
     <echo>${e42.mf.Require-Bundle}</echo> 
     <echo>${Require-Bundle}</echo> 
     --> 
     <jar update="true" file="${e42.plugin.jar}"> 
      <manifest> 
       <attribute name="Require-Bundle" value="${Require-Bundle}"/> 
      </manifest> 
     </jar> 
     <checksum file="${e42.plugin.jar}" property="updated.md5"/> 
     <!-- 
     <echo>${original.md5}</echo> 
     <echo>${updated.md5}</echo> 
     --> 
    </target> 

    <target depends="update.manifest" name="update.artifacts"> 
     <delete includeemptydirs="true"> 
      <fileset dir="${project.temp.dir}" includes="**/*"/> 
     </delete> 
     <unzip src="${artifacts.jar}" dest="${project.temp.dir}"/> 
     <replaceregexp byline="true"> 
      <regexp pattern="${original.md5}"/> 
      <substitution expression="${updated.md5}"/> 
      <fileset dir="${project.temp.dir}"/> 
     </replaceregexp> 
     <zip destfile="${artifacts.jar}" basedir="${project.temp.dir}"/> 
    </target> 

    <target depends="update.artifacts" name="update.content"> 
     <delete includeemptydirs="true"> 
      <fileset dir="${project.temp.dir}" includes="**/*"/> 
     </delete> 
     <unzip src="${content.jar}" dest="${project.temp.dir}"/> 
     <replaceregexp byline="true"> 
      <regexp pattern="name='org.eclipse.core.runtime' range='\[3.8.0,3.10.0\)'"/> 
      <substitution expression="name='org.eclipse.core.runtime' range='0.0.0'"/> 
      <fileset dir="${project.temp.dir}"/> 
     </replaceregexp> 
     <zip destfile="${content.jar}" basedir="${project.temp.dir}"/> 
    </target> 

    <target depends="update.content" name="create.updated.plugin"> 
     <zip destfile="${plugin44.zip}" basedir="${project.plugin.dir}"/> 
     <delete dir="${project.temp.dir}"/> 
     <delete dir="${project.plugin.dir}"/> 
    </target> 

    <target depends="create.updated.plugin" name="update.end"> 
     <echo message="plugin rebuild success"/> 
    </target> 

</project> 

Ich werde die Worte Eclipse-Mars hier, so kann diese Lösung durch die Suche und möglicherweise angepasst für den Juni 2015 Release von Eclipse hinzufügen zu finden.

+1

Die offizielle Version von GPE 3.7.0 ist jetzt verfügbar: [https://dl.google.com/eclipse/plugin/4.4](https://dl.google.com/eclipse/plugin/4.4) (Eclipse Luna) –

7

Laut dem Google Plugin for Eclipse-Community-Forum können wir Mitte Juli möglicherweise ein neues Plugin mit Luna-Unterstützung erwarten.

https://groups.google.com/forum/#!topic/google-plugin-eclipse/4YACQROrB2U

+0

Danke für das Aufzeigen dieser Gruppe. Ich habe es geschafft, das Kepler-Plugin in Luna zu installieren, indem ich die Anweisungen in diesem Diskussions-Thread nutze. Ich habe Sie aufgestockt, aber meine Antwort als die akzeptierte Antwort markiert, da sie eine Möglichkeit bietet, das Problem zu lösen, das kein Warten beinhaltet ... :-) –

+0

Endlich ist es da! –

2

Dies scheint vor kurzem gelöst zu sein.

ich nicht das Plugin auf dem Marktplatz als des Schreibens dieses gefunden haben, aber es gibt eine Update-Site: https://dl.google.com/eclipse/plugin/4.4

Sie können mehr über diese Zeilen lesen bei https://developers.google.com/eclipse/docs/install-eclipse-4.4

+0

Ja, ich habe einen Kommentar zu diesem Effekt unter meiner Antwort oben hinzugefügt, aber es ist gut, es als vollständige Antwort und nicht nur als Kommentar zu haben. Vielen Dank. –