下载 Eclipse 插件更新站点以进行离线安装

Posted

技术标签:

【中文标题】下载 Eclipse 插件更新站点以进行离线安装【英文标题】:Downloading Eclipse plug-in update sites for offline installation 【发布时间】:2010-11-25 03:56:45 【问题描述】:

我要安装的插件提供了一个更新站点进行安装。但是,我想要安装的 Eclipse 安装在未连接到 Internet 的机器上。有没有办法让我访问该站点(HTTP、FTP 等)以下载其中的文件以进行离线安装?

【问题讨论】:

【参考方案1】:

Eclipse 提供了一种自动镜像这些站点的方法,无论是通过命令行还是通过 ant 任务。

基于p2信息的镜像

$eclipse_home/eclipse -application org.eclipse.equinox.p2.artifact.repository.mirrorApplication -source $1 -destination $2
$eclipse_home/eclipse -application org.eclipse.equinox.p2.metadata.repository.mirrorApplication -source $1 -destination $2

参考:Equinox p2 repository mirroring

根据site.xml信息镜像

java -jar $eclipse_home/plugins/org.eclipse.equinox.launcher_*.jar -application org.eclipse.update.core.standaloneUpdate -command mirror -from $from -to $to

参考:Running the update manager from the command line

您可以在我的script repository 中关注这些脚本的演变。

【讨论】:

开普勒使用this @vincentlcy - 这不是在“基于 p2 信息的镜像”标题中找到的吗? 哦,对不起,不知道这是一回事。对我来说,在开普勒我找不到这个 $eclipse_home/plugins/org.eclipse.equinox.launcher_*.jar 我的 Kepler 安装中仍然有启动器 jar,但我认为它是可选的。所以我首先移动了“p2”部分,因为它是受支持的部分,并且看起来与您链接的部分完全一样。感谢您的贡献:-) 还有什么方法可以下载依赖项?因为我尝试过 m2e 离线安装,但它抛出一个错误,说它找不到 slf4j 包【参考方案2】:

在与镜像斗争了一段时间后,我意识到使用“wget”来代替(至少对我而言)要容易得多。

简而言之:

    下载网站:

    wget --recursive --no-parent http://url.of/updatesite

    获取下载的更新站点的内容并将其移动到您的离线环境中

    通过“本地...”按钮将您的离线更新站点目录添加到可用软件站点列表中。

您可以阅读更多详细信息here。

【讨论】:

最简单的方法。我的主要问题是找到 Jubula 的网址。 download.eclipse.org 将内容隐藏在“显示目录内容”链接后面。最后我猜到了http://download.eclipse.org/jubula/release/mars/ 这对于托管在 S3 或其他对象存储中的东西也会失败,因此不要提供可抓取的网站。 嗯,它主要在 3 年前起作用。当时大多数插件都没有使用对象存储... wget --recursive --no-parent download.eclipse.org/releases/kepler 但它只下载它的 xml 文件。如何下载完整文件。【参考方案3】:

大多数 Eclipse 插件无需 Eclipse 更新程序即可安装,只需将更新站点上可用的所需 JAR 复制到 Eclipse 安装的插件和功能目录中即可。

在某些情况下,需要使用 -clean 开关启动 Eclipse。

以下是如何为 m2eclipse 插件执行此操作的示例:

    m2eclipse 更新站点是http://m2eclipse.sonatype.org/update。第一步是确定所需的 JAR 列表。这通常在 site.xml 文件中找到;在这种情况下,您可以在 http://m2eclipse.sonatype.org/update/site.xml 中找到它。 过滤要下载到您打算使用的插件版本的 JAR 列表。这可以由每个“功能”的版本属性确定。如果幸运的话,您会在类别节点中找到 JAR 的描述。 注意每个需要下载的JAR的url属性。这将包括 JAR 可用的服务器上的子目录,以及 Eclipse 安装中需要放置它们的目录。

PS:这个方法有点hackish,但它基于site-map reference。但请参考更新

更新

我没有尝试过,但是您可以创建一个本地镜像站点,其他人都可以从该站点获取 Eclipse 插件。在 Galileo 中,这可以通过运行 Eclipse updater in the standalone mode via the mirror command 来完成。

【讨论】:

尝试了您的第一个建议。能够找到并下载 JAR,但它们似乎不包含任何内容。将它们安装在“dropins”目录中并重新启动,但也没有任何反应。将尝试您的其他建议。顺便说一句,我要安装的插件是来自 download.eclipse.org/tools/mylyn/update/incubator 的 Mylyn 的通用 Web 模板连接器。 对于第一个建议,我尝试下载download.eclipse.org/tools/mylyn/update/incubator/features/…。下载没有问题。 回过头来看,更新地址是download.eclipse.org/tools/mylyn/update/incubator,site.xml中提到的文件是features/org.eclipse.mylyn.sandbox.ui_feature_3.2.1.v20090722-0200-e3x.jar。因此,JAR 的有效 URL 是 download.eclipse.org/tools/mylyn/update/incubator/features/… 获取这些功能没有帮助。你需要插件。我建议尝试使用 Eclipse 更新程序来创建站点的镜像。完成后,只需将其打包成一个 zip 并使用该 zip 作为更新管理器中的更新站点。 可以从 Mylyn 下载页面以 zip @eclipse.org/downloads/download.php?file=/tools/mylyn/update/… 的形式获得相同的插件。这应该是 OP 在本地分发插件的最简单方法。【参考方案4】:

您可以使用 Ant 任务镜像 p2 站点:

<target name="springide">
    <echo>springide</echo> 
    <p2.mirror verbose="true">
        <repository location="$REPO_HOME/springide" name="springide" append="true"/>
        <source>
            <repository location="http://springide.org/updatesite" />
        </source>
        <iu id="Core / Spring IDE" version="" />
        <iu id="Extensions / Spring IDE" version="" />
        <iu id="Integrations / Spring IDE" version="" />
        <iu id="Resources / Spring IDE" version="" />
    </p2.mirror>
</target>

或查找错误:

<target name="findbugs">

<echo>findbugs</echo>
    <p2.mirror verbose="true">
        <repository location="$REPO_HOME/findbugs" name="findbugs" append="true"/>
        <source>
            <repository location="http://findbugs.cs.umd.edu/eclipse/" />
        </source>
        <iu id="edu.umd.cs.findbugs.plugin.eclipse.feature.group" version="" />
    </p2.mirror>
</target>

为了让它工作,你必须在与 eclipse 相同的 JVM 中运行 ant 任务。

您可以通过打开“软件更新”找到 IU ID:s 并从那里复制。在 Eclipse 3.5 中应该有一个 More... 按钮,在 3.4 中您必须单击属性按钮。

【讨论】:

【参考方案5】:

Eclipse 插件通常依赖于其他插件。跟踪依赖关系有点困难。最好使用更新站点一次下载所有依赖项,然后您可以分发到其他 Eclipse 插件。对于 Eclipse 3.4 或更高版本,您可以使用作为 Eclipse 功能的 dropins。这样,您不必每次必须重新安装 Eclipse 时都从更新站点安装插件。继续阅读http://michsan.web.id/content/how-install-eclipse-plugins-offline

如果你看不到网页,我会给你一些描述

为外部插件准备目录

创建特殊目录来保存我们心爱的插件,例如在 /home/ichsan/eclipse-dropins 我们将安装 Maven 插件:m2eclipse。

mkdir /home/ichsan/eclipse-dropins

现在,我们将此目录称为 DROPINS

准备沙盒

接下来,我们将使用 Git 创建一个 Eclipse 沙箱。关键是在新的 Eclipse 上安装一个插件。与其每次要安装新插件时都安装新的 Eclipse,不如使用 Git 来创建新的 Eclipse 的新分支。

首先,将新的 Eclipse 解压/安装到一个目录,例如/home/ichsan/eclipse-sandbox(这样我们就可以找到 /home/ichsan/eclipse-sandbox/eclipse.ini)。我们将该目录称为 ECLIPSE_SANDBOX。

接下来,提交全新安装。这一步应该只做一次。

cd $ECLIPSE_SANDBOX
git init
git add .
git commit -am "Fresh Eclipse"

在沙盒上安装插件

现在是有趣的部分。假设我们必须安装 m2eclipse 插件。我们将把它安装在新的 Git 分支上,以便主分支保持干净或完好无损。

cd $ECLIPSE_SANDBOX
git checkout -b "m2eclipse"

现在,我们启动 ECLIPSE_SANDBOX 的 Eclipse 并下载插件。完成后,我们关闭 Eclipse 并检查创建了哪些新目录或文件(使用 Git)。请记住,我们只关心新插件和功能目录以及其中的内容。因此,我们不会将其余部分复制到 dropins 中。

# Prepare the m2eclipse plugin directories
mkdir -p $DROPINS/m2eclipse/eclipse/plugins
mkdir -p $DROPINS/m2eclipse/eclipse/features

cd $ECLIPSE_SANDBOX
for f in $(git status | sed "s/#\t//g" | grep -P "^plugins" ); do cp -R $f $DROPINS/m2eclipse/eclipse/plugins; done
for f in $(git status | sed "s/#\t//g" | grep -P "^features"); do cp -R $f $DROPINS/m2eclipse/eclipse/features; done

# Make the directory read only
chmod -R -w $DROPINS/m2eclipse

# Commit changes
git add .
git add -u
git commit -am "M2Eclipse plugin installed"


# Back to master branch to make Eclipse clean again and ready for other plugin installations
git checkout master
Installing the plugin

只需将 DROPINS/m2eclipse 的目录复制到 ECLIPSE_HOME/dropins 或创建一个符号链接。我们完成了!

cd $ECLIPSE_HOME/dropins ln -s $DROPINS/m2eclipse

另一种方法是备份新 Eclipse 提交和插件安装后提交之间的差异。

for i in `git diff hashFreshEclipse hashPluginInstall --name-only`;do 
  if [ -f $i ]; then
    tar -r -f m2e-android.tar $i
  fi
done
gzip m2e-android.tar

【讨论】:

【参考方案6】:

你可以从这里得到它https://repository.sonatype.org/content/repositories/forge-sites/m2e/1.3.0/N/1.3.0.20121023-1108/

下载深入了解插件和功能的所有文件。存储在您机器上的目录中,将所有内容保持在相同的目录结构中。将其移动到您的开发机器上的文件夹中。

在 Eclipse 中转到帮助 |安装新软件... 点击“添加”按钮 点击“本地...”按钮 浏览您将文件放入的目录。按照屏幕上的说明进行操作。

【讨论】:

【参考方案7】:

我发现 p2 mirrorApplication 在某些站点上运行不佳,并且镜像了重复的工件(pack200 和 jar 版本)。 b3 聚合器工作得更好,并且更容易自定义我的更新站点。有关安装说明和详细信息,请参阅手册:https://wiki.eclipse.org/Eclipse_b3/aggregator/manual。

我使用的基本步骤是:

文件 > 新建 > 其他... > b3 > 存储库聚合。 选择 Aggregation 节点并将 Build Root 设置为您希望聚合存储库所在的文件夹。 使用 R 键添加您关心的平台 Aggregation 节点 > New Child > Configuration。 添加一个Validation Set,一般将其Label设置为main。 如果您不需要主 Eclipse 存储库中的任何其他捆绑包(即:http://download.eclipse.org/releases/mars),您可以将其添加到 验证集 作为 验证存储库,但通常您需要将其作为 Mapped Repository 添加到 Contribution 下,以便可以下载依赖项和/或其他 eclipse 功能。 对于每个插件,添加一个带有 LabelContribution,并在其下至少有一个 Mapped Repository 带有 Location。 如果需要,将 Custom Category 节点添加到 Aggregation;给他们每个人一个唯一的描述标识符标签。 展开底部的Repository Browser节点>展开repo url>展开Installable Units>查看Categories下的特性(如果存在)和/或在功能下。 右击您想要的功能并添加到自定义类别(如果您正在使用这些功能),否则添加到父映射存储库为 > 映射功能。 右击任意节点 > 构建聚合。

重要提示:如果您不映射给定存储库中的任何功能,则整个存储库将被镜像(我认为是所有捆绑包的最新版本,而不是存储库中的所有内容)。

幸运的是,我不必弄乱排除规则或有效配置规则,这似乎使事情变得更加复杂。但是,如果存储库包含存在依赖冲突的捆绑包,则可能需要排除规则,在这种情况下,需要排除一个或多个冲突的捆绑包。

虽然 b3 Aggregator 通常只下载您映射的每个功能(及其依赖项)的最新版本,但如果您在新版本发布时反复使用 Build Aggregation,过时的版本将会累积在您的聚合中。您可以使用 Clean 然后构建聚合 但这意味着您必须重新下载所有内容。相反,只需添加另一个 .b3aggr 聚合文件,设置构建根目录,添加您的配置,然后使用本地镜像的 final 目录的路径添加一个带有映射存储库的贡献。不要映射任何特征或创建任何类别。然后 Build Aggregation,只会聚合镜像中的最新版本!

【讨论】:

【参考方案8】:

我刚刚遇到了这个问题,并按照guide 的说明解决了这个问题。总之,在终端的 Eclipse 文件夹中运行以下命令:

    eclipsec.exe -application org.eclipse.equinox.p2.metadata.repository.mirrorApplication -source $1 -destination $2

    eclipsec.exe -application org.eclipse.equinox.p2.artifact.repository.mirrorApplication -source $1 -destination $2

其中$1 指的是在线存储库的URL,$2 指的是本地文件夹的路径。例如。在我的 Windows 桌面上下载 Vrapper:

$1 = http://vrapper.sourceforge.net/update-site/stable/

$2 = C:/Users/foo/Desktop

将文件夹传送到没有 Internet 连接的机器。然后,启动 Eclipse -> 帮助 > 安装新软件。指定安装的本地存储库(即您刚刚转移的文件夹)。应该可以的。

【讨论】:

与同一问题中的现有答案相同:***.com/a/1907322。请改为对现有答案投赞成票,并添加 cmets 以获得较小的贡献。 我第一次阅读现有答案时不明白,这就是我搜索其他信息并在此处发布答案的原因。 ***.com/questions/38571201/… 的 OP 也认为答案“似乎过时了”。但是,是的,我同意我应该发表评论,谢谢! 这个答案提供了比接受的答案更清晰的说明,并且是我使用的那个。感谢您提供。 这个问题的公认答案太简洁了。这个答案告诉我我需要的一切以及每个变量是什么。我不必成为 Eclipse 开发人员也能理解答案。 +1

以上是关于下载 Eclipse 插件更新站点以进行离线安装的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse怎么离线安装JD-Eclipse反编译插件

如何在eclipse离线安装svn插件

Eclipse4.8.0的svn插件离线安装说明

JetBrains系列(IDEADataGripPyCharm) -- 快速离线安装插件:解决在线安装失败的问题(以Translation为案例)

[www.infoshare.cc]mac下eclipse的ADT插件离线安装方式

离线安装eclipse-testNG插件