在Eclipse清单编辑器中,存在用于启用/禁用插件激活和单例行为的复选框,如下所示:
[ ] Activate this plug-in when one of its classes is loaded
[ ] This plug-in is a singleton
Run Code Online (Sandbox Code Playgroud)
我正在搜索信息或一些示例,这些信息将证明何时不需要激活插件(即故意不激活).单身行为更清楚(在我看来),以确定何时合适(例如,记录器).
非常感谢!
迈克尔
我目前正在无头模式下使用PDE构建来构建我的OSGI Bundle项目.PDE Antrunner任务使用Eclipse安装,我只是指向我的本地Eclipse安装.
不幸的是,我的eclipse安装大约260MB,但我认为PDE版本不需要在标准的eclipse安装中使用所有这些插件.
现在有人做了无头PDE构建所需的最小插件列表吗?我在自定义目标平台文件夹中实际拥有的所有依赖项,所以我想我在eclipse安装中唯一需要的是PDE构建实际需要的依赖项.但是那些是什么?我可以将安装缩小到最低限度吗?
我的目标是在我的项目的SVN中签入这个"build-eclipse"文件夹,这样当你检查它时,你就拥有了启动完整构建所需的一切,而不需要触及任何build.properties.但是如果我可能只需要20MB的话,我不想提供266MB的日食.
谢谢Christoph
我正在编写一个Eclipse插件,它将在Java项目的上下文菜单中显示一个菜单项.我编写了plugin.xml,如下所示:
<plugin>
<extension
point="org.eclipse.ui.menus">
<menuContribution
locationURI="popup:org.eclipse.jdt.ui.PackageExplorer">
<dynamic
class="uk.co.dajohnston.plugin.classpathswitcher.menu.MenuContribution"
id="uk.co.dajohnston.plugin.classpathSwitcher.switchMenuContribution">
<visibleWhen>
<with
variable="activeMenuSelection">
<iterate>
<adapt
type="org.eclipse.jdt.core.IJavaProject">
</adapt>
</iterate>
<count
value="1">
</count>
</with>
</visibleWhen>
</dynamic>
</menuContribution>
</extension>
</plugin>
Run Code Online (Sandbox Code Playgroud)
所以我现在正在尝试编写MenuContribution扩展的类,CompoundContributionItem这样我就可以创建一个动态菜单,这个菜单的内容将基于Java Project的根目录中存在的一组文件.但是我试图从getContributionItems方法中获取根目录的路径.
基于plugin.xml文件,我可以保证仅在选择单个Java项目时才调用该方法,因此我需要做的就是获取当前选择,然后获取其绝对路径.有任何想法吗?或者有更好的方法吗?
我正在使用 PDE,并在 build.xml 中编译代码并尝试使用 JaCoCo 和 JUnit 创建覆盖率报告。我注意到它现在确实显示了源文件,即使我sourcefiles在. 为了调试它(因为它不打印任何错误),我尝试在本地运行它:structurejacoco:report
java -jar jacoco/jacococli.jar report /buildFiles/coverage/jacoco.exec --classfiles /buildFiles/plugins/com.gandu.da.util.test/bin/com/gandu/da/util/test/AllTests.class --sourcefiles /buildFiles/plugins/com.gandu.da.util.test/src/com/gandu/da/util/test/AllTests.java --html html_report
Run Code Online (Sandbox Code Playgroud)
但它仍然没有显示 html 文件中的源代码。在JaCoCo 官方常见问题解答中我看到:
为什么覆盖率报告不显示突出显示的源代码?确保满足以下先决条件才能在 JaCoCo 覆盖率报告中突出显示源代码:
- 类文件必须使用调试信息进行编译以包含行号。
- 必须在报告生成时正确提供源文件。即指定的源文件夹必须是定义 Java 包的文件夹的直接父级。
我用标志编译了代码-g以获取所有信息 - 它不起作用。另外我相信我确实按预期提供了 src/bin 文件,所以我不确定为什么它不起作用。如何让它发挥作用?
编辑:我必须提供src目录:
java -jar jacoco/jacococli.jar report /buildFiles/coverage/jacoco.exec --classfiles /buildFiles/plugins/com.gandu.da.util.test/bin/com/gandu/da/util/test/AllTests.class --sourcefiles /buildFiles/plugins/com.gandu.da.util.test/src
# WORKED!
Run Code Online (Sandbox Code Playgroud)
现在我想用我的 build.xml 解决这个问题。代码:
<jacoco:report>
<executiondata>
<file file="${coverage.file}"/>
</executiondata>
<structure name="Coverage Report">
<classfiles>
<fileset dir="${buildDirectory}/plugins/com.gandu.da.util.test/bin">
<include name="**/*.class" />
</fileset>
</classfiles> …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个RCP插件项目的工作区.
我们已经设置了目标平台,因此我们可以针对一组标准插件进行构建,但是无法查看所有平台插件的源代码和Javadoc.
添加eclipse目录时,Windows - >首选项 - >插件开发 - >目标平台 - >源代码位置页面似乎没有任何效果(它只允许您添加目录).
将源jar从eclipse目录复制到目标平台具有类似的效果.
我究竟做错了什么?如何将一组Source jar附加到我的目标平台?
我正在开发一个由几个Eclipse插件组成的Eclipse功能,使用Equinox声明性服务(DS)在运行时将插件连接在一起.我想添加集成测试来验证equinox配置.
特别是,我想验证一下
此外,我想使用Eclipse PDE无头构建(如此处和此处所述)将此集成测试作为我的持续集成过程的一部分.
我的问题是:您能否推荐任何框架,工具或实践,以便在我确定的约束条件下促进此类集成测试?
到目前为止我找到了两个线索:
编辑:为了澄清,每个插件都有一个配置了组件定义xml文件的OSGi服务组件.其中一个配置文件中的错误不会破坏任何插件依赖性,并且很容易在运行时被忽视.必须进行集成测试才能检测到此类故障.
编辑2:到目前为止,我所看到的每件事似乎都证实了Uri的断言(见下文),多插件Eclipse功能未在功能/产品级别进行集成测试.如果我能至少自动验证服务组件是否正确绑定在一起,我愿意不进行全面的集成测试.
我的方法(还没有工作):
In a JUnit test do
For each bundle/plugin of interest
Get the osgi Bundle object with org.eclipse.core.runtime.Platform.getBundle()
Verify that the Bundle is active with Bundle.getState()
Verify that the Bundle is using the expected services with Bundle.getServicesInUse()
Verify that the Bundle has registered the expected services with Bundle.getRegisteredServices()
我正在使用Eclipse Plug-in …
Maven管理的Eclipse插件包含以下配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>wonttellya</groupId>
<artifactId>wonttellya</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
...
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.10</version>
<configuration>
<pde>true</pde>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
在控制台我运行
C:\Users\user\git\wonttellya\mvn
eclipse:eclipse -Declipse.workspace=C:\Users\user\workspace2
...
Using Eclipse Workspace: C:\Users\user\workspace2
...
BUILD SUCCESS
Run Code Online (Sandbox Code Playgroud)
如果我在工作区中打开Eclipse,则没有项目.
我创建了自己的目标定义.它一直运作到现在.今天我打开了这个目标定义,并且我在那里找到了所有软件站点的跟随错误:
Unable to locate installable unit <unit name>
Run Code Online (Sandbox Code Playgroud)
目标定义文件如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.6"?>
<target name="indigo" sequenceNumber="20">
<locations>
<location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.zest.feature.group" version="1.3.0.v20110425-2050-67A18yF6F18CBD5A7N54242"/>
<unit id="org.eclipse.zest.sdk.feature.group" version="1.3.0.v20110425-2050-67C18COMPIAKSVKGQaRTQTiSN8WP"/>
<unit id="org.eclipse.zest.source.feature.group" version="1.3.0.v20110425-2050-67A18yF6F18CBD5A7N54242"/>
<repository location="http://download.eclipse.org/releases/indigo"/>
</location>
<location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.jdt.feature.group" version="3.7.2.v20120120-1414-7z8gFcuFMP7BW5XTz0jLTnz0l9B1"/>
<unit id="org.eclipse.jdt.source.feature.group" version="3.7.2.v20120120-1414-7z8gFcuFMP7BW5XTz0jLTnz0l9B1"/>
<unit id="org.eclipse.pde.source.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
<unit id="org.eclipse.platform.sdk" version="3.7.2.M20120208-0800"/>
<unit id="org.eclipse.rcp.id" version="3.7.2.M20120208-0800"/>
<unit id="org.eclipse.rcp.sdk.id" version="3.7.2.M20120208-0800"/>
<repository location="http://download.eclipse.org/eclipse/updates/3.7"/>
</location>
<location includeAllPlatforms="false" includeMode="planner" includeSource="true" type="InstallableUnit">
<unit id="org.eclipse.egit.feature.group" version="1.3.0.201202151440-r"/>
<unit id="org.eclipse.egit.source.feature.group" version="1.3.0.201202151440-r"/>
<unit id="org.eclipse.jgit.feature.group" version="1.3.0.201202151440-r"/>
<unit id="org.eclipse.jgit.source.feature.group" version="1.3.0.201202151440-r"/>
<repository …Run Code Online (Sandbox Code Playgroud) 我正在为eclipse开发一个编辑器插件.它在eclipse项目中的文件上工作正常,但是当通过"文件 - >打开文件"菜单(用例如Java文件工作文件)打开外部文件时,我得到的页面只显示水平蓝线和单词"ERROR".eclipse的错误日志为空,与.metadata目录中的日志文件一样.
什么可能导致这个?当我没有错误消息告诉我在哪里查看时,如何诊断错误?似乎没有办法从eclipse获得更详细的日志记录.
编辑:
我发现问题的根源与jamesh提到的一样,但不是ClassCastException - IDocument文本查看器根本没有显示的实例,因为StorageDocumentProvider.createDocument()返回null.这样做的原因是它只知道如何为实例创建文档org.eclipse.ui.IStorageEditorInput,但在这种情况下它获取的实例org.eclipse.ui.ide.FileStoreEditorInput,它不实现该接口,而是实现org.eclipse.ui.IURIEditorInput
我想知道是否有办法在Clojure中开发Eclipse插件.要清楚,问题不在于使用Eclipse编写Clojure代码.
Eclipse和Clojure都在JVM上运行,我觉得应该有办法利用Clojure(及其库)的强大功能来开发插件.我特意看着使用Korma,但总的来说,如果有一种自然的方式,我想将完整的插件移动到clojure.
eclipse-pde ×10
eclipse ×8
java ×5
eclipse-rcp ×2
clojure ×1
eclipse-3.4 ×1
headless ×1
jacoco ×1
manifest.mf ×1
maven ×1
osgi ×1