Sembra che v'è un modo per alterare i manifesti per consentire il plugin di Google per Kepler da installare in Eclipse Luna. Collaboratore Ze Kritter su Google Gruppi ha scritto un file Apache Ant build.xml
che esegue il lavoro necessario, original here e riprodotto di seguito.
Ha funzionato magnificamente per me. Ho eseguito correttamente questo script e installato il plugin in Luna, e - almeno per GWT - sembra funzionare come al solito.
Secondo il discussion thread su Google Gruppi ci sono alcune incompatibilità con il plugin Maven (io personalmente non uso Maven) e una nuova e adeguatamente collaudato plugin di Google uscirà a breve (fine luglio 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="\[3.8.0,3.10.0\)"(.*)"
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>
io aggiungo le parole Eclipse Marte qui, quindi questa soluzione può essere trovata con la ricerca e potenzialmente adattato per il rilascio di giugno 2015, di Eclipse.
fonte
2014-07-21 19:44:30
Luna è ancora in fase di sviluppo (M6 è una build Milestone), quindi è improbabile che altri prodotti lo abbiano ancora testato. –
Capisco che Luna sia ancora in sviluppo. Mi stavo chiedendo se c'è un modo per installare il plugin comunque. Sono pronto a correre questo rischio. –
Luna è ufficialmente rilasciato ora, quindi ora aspettiamo su google! –