web-dev-qa-db-fra.com

Google Plugin pour Eclipse Luna?

J'ai installé Eclipse Luna 4.4-M6. J'ai essayé d'installer le Google Plugin pour Eclipse 4.3 (Kepler), mais Eclipse ne me permettait pas de l'installer.

Existe-t-il un moyen de le forcer à s’installer (par exemple, en le téléchargeant et en modifiant un manifeste ou un autre)? Ou est-ce que ce serait inutile en raison des changements brusques entre 4.3 et 4.4?

18
ᴇʟᴇvᴀтᴇ

Il se trouve que is est un moyen de modifier les manifestes pour permettre l’installation du plug-in Google pour Kepler dans Eclipse Luna. Contributor Ze Kritter sur Google Groupes a écrit un fichier Apache Ant build.xml qui effectue le travail nécessaire, original ici et reproduit ci-dessous.

Cela a fonctionné magnifiquement pour moi. J'ai réussi à exécuter ce script et à installer le plug-in dans Luna, et - du moins pour GWT - il semble fonctionner comme d'habitude.

Selon le fil de discussion } de Google Groupes, il existe des incompatibilités avec le plug-in Maven (je n'utilise personnellement pas Maven) et un nouveau plug-in Google, qui a fait ses preuves, sera publié sous peu (fin juillet 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>

J'ajouterai les mots Eclipse Mars ici, afin que cette solution puisse être trouvée en recherchant et éventuellement adaptée pour la version de juin 2015 d'Eclipse.

2
ᴇʟᴇvᴀтᴇ

Selon le forum de la communauté Google Plugin for Eclipse, nous pourrions nous attendre à un nouveau plugin prenant en charge Luna d’ici à la mi-juillet.

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

7
Jim McCabe

Cela semble avoir été résolu récemment.

Je n'ai pas trouvé le plugin dans Marketplace à ce jour, mais il existe un site de mise à jour: https://dl.google.com/Eclipse/plugin/4.4

Vous pouvez en savoir plus à ce sujet sur https://developers.google.com/Eclipse/docs/install-Eclipse-4.4

2
Henrik Paul

Google vient de publier son SDK officiel pour Eclipse Luna: https://developers.google.com/Eclipse/docs/getting_started

0
MrTux