Java Eclipse Luna 的 Google 插件?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23119661/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Google Plugin for Eclipse Luna?
提问by ???v?т?
I have installed Eclipse Luna 4.4-M6. I tried installing the Google Pluginfor Eclipse 4.3 (Kepler), but Eclipse would not allow me to install it.
我已经安装了 Eclipse Luna 4.4-M6。我尝试为 Eclipse 4.3 (Kepler)安装Google 插件,但 Eclipse 不允许我安装它。
Is there some way to force it to install (e.g. by downloading it and editing some manifest or other)? Or would this be futile due to breaking changes between 4.3 and 4.4?
有没有办法强制安装它(例如通过下载它并编辑一些清单或其他)?或者这会因为 4.3 和 4.4 之间的重大变化而徒劳无功?
采纳答案by ???v?т?
It turns out there isa way to alter the manifests to allow the Google Plugin for Kepler to install in Eclipse Luna. Contributor Ze Kritteron Google Groups has written an Apache Ant build.xml
file that performs the necessary work, original hereand reproduced below.
原来有是一种方法来改变体现,让谷歌插件开普勒在Eclipse月神安装。Google Groups 上的贡献者Ze Kritter编写了一个 Apache Antbuild.xml
文件来执行必要的工作,这里是原创并在下面复制。
It worked beautifully for me. I have successfully run this script and installed the plugin into Luna, and - at least for GWT - it seems to work as usual.
它对我来说效果很好。我已经成功地运行了这个脚本并将插件安装到 Luna 中,并且 - 至少对于 GWT - 它似乎像往常一样工作。
According to the discussion threadon Google Groups there are some incompatibilities with the Maven plugin (I personally don't use Maven) and a new and suitably well-tested Google plugin will be coming out shortly (late July 2014).
根据Google Groups 上的讨论主题,Maven 插件存在一些不兼容问题(我个人不使用 Maven),并且不久(2014 年 7 月下旬)将推出一个经过适当测试的新 Google 插件。
<?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=""
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>
I'll add the words Eclipse Marshere, so this solution can be found by searching and potentially adapted for the June 2015 release of Eclipse.
我将在此处添加Eclipse Mars字样,因此可以通过搜索找到该解决方案,并可能适用于 2015 年 6 月发布的 Eclipse。
回答by Jim McCabe
According to the Google Plugin for Eclipse community forum, we might be able to expect a new plugin with Luna support by mid-July.
根据 Google Plugin for Eclipse 社区论坛,我们可能会在 7 月中旬之前期待一个支持 Luna 的新插件。
https://groups.google.com/forum/#!topic/google-plugin-eclipse/4YACQROrB2U
https://groups.google.com/forum/#!topic/google-plugin-eclipse/4YACQROrB2U
回答by Henrik Paul
This seems to be recently resolved.
这似乎是最近解决的。
I didn't find the plugin in the Marketplace as of writing this, but there's an update site: https://dl.google.com/eclipse/plugin/4.4
在撰写本文时,我没有在 Marketplace 中找到该插件,但有一个更新站点:https: //dl.google.com/eclipse/plugin/4.4
You can read more about this at https://developers.google.com/eclipse/docs/install-eclipse-4.4
您可以在https://developers.google.com/eclipse/docs/install-eclipse-4.4阅读更多相关信息
回答by MrTux
Google just released its official SDK for Eclipse Luna: https://developers.google.com/eclipse/docs/getting_started
谷歌刚刚发布了 Eclipse Luna 的官方 SDK:https: //developers.google.com/eclipse/docs/getting_started