当使用tycho-surefire-plugin执行JUnit测试时,tycho会分配一个equinox运行时.在极少数情况下,可能会发生OSGi测试运行时中的某些bundle无法解析/启动(例如,包使用冲突).如果您阅读调试日志(maven CLI选项-X),您会发现类似的内容
!ENTRY org.eclipse.osgi 2 0 2012-10-08 16:41:31.635
!MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
!SUBENTRY 1 org.eclipse.osgi 2 0 2012-10-08 16:41:31.635
An error has occurred. See the log file
C:\mytestproject.tests\target\work\configuration\1349705136008.log.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12:03.181s
[INFO] Finished at: Mon Oct 08 16:17:16 CEST 2012
[INFO] Final Memory: 20M/309M
[INFO] …Run Code Online (Sandbox Code Playgroud) 如何使用Eclipse P2存储库和Maven tycho-p2-plugin构建SWT应用程序?
我正在使用maven和tyhco编译和构建我的eclipse插件并创建一个p2存储库.
但是,当我安装我的插件时,eclipse会显示不受信任内容的警告.我知道要解决这个问题,我必须签署我分发的插件.
但是,我不知道是否有办法签署我正在用tycho构建的插件...
(我不是maven和jar签名的专家,所以请原谅我这个愚蠢的问题!)
是否存在所有可能性的列表,以在Eclipse RCP项目中定义依赖项?也许按资源过滤?
可能的依赖关系:
我尝试Eclipse Indigo RCP使用Maven和编译应用程序Tycho.如果我只为一个平台构建它,它工作正常,但如果我尝试构建它更多,构建停止工作.
问题是我在我想要构建的产品文件中有特定于平台的插件.依赖性,例如org.eclipse.swt.win32.win32.x86片段插件org.eclipse.swt.
当我没有向我的产品添加特定于平台的片段时,应用程序将无法启动,因为没有像org.eclipse.swt.win32.win32.x86这样的平台库.作为Tycho存储库,我们使用托管在我们自己的服务器上的eclipse indigo更新站点的克隆.它包括delta-pack.当我为所有平台添加所有片段时,构建崩溃并且maven告诉我平台过滤器与Linux构建不匹配.
有谁知道如何解决这一问题?
我应该将这些平台相关的东西添加到我的产品中吗 我更喜欢将特定的依赖项保留在我的产品之外,对吗?
我正在使用Tycho 0.16.0,我收到以下错误:
Error - 7 icon(s) not replaced in C:\Users\weich01\AppData\Local\Temp\p2.brandingIron8219115442087687624\launcher.exe using C:\Development\Workspaces\Workspace RCP SR2\de.mycompany.myproduct.product\target\products\MyProduct\de.mycompany.myproduct.feature\logo_pms_2011.ico
Run Code Online (Sandbox Code Playgroud)
使用Eclipse中的导出向导,一切正常,因此产品定义是正确的.图标文件包含所有大小的位图.
我尝试在我的 Eclipe-RCP 应用程序中使用我的旧代码。我使用了所有带有依赖项的旧 maven 项目,并使用 maven-bundle-plugin 创建了一个 osgi 包。
现在我把所有东西都装在一个新的 osgi jar 中。
如何从此 osgi jar 创建 p2 更新站点以与 tycho 和 eclipse 目标平台一起使用?
我试过:https : //docs.sonatype.org/display/TYCHO/How+to+make+existing+OSGi+bundles+consumable+by+Tycho
如果我将生成的文件放在 Web 服务器上,eclipse 不会将其识别为“软件站点”。
如何在不使用 Eclipse UI 的情况下从现有的 osgi 包创建 p2 软件站点,该过程必须在我的构建服务器的后台运行。
有没有办法使用 Maven (Tycho)/Gradle 从现有的 osgi 包自动创建 p2 更新站点?
我正在寻找测试一组eclipse插件的可能性,而不必为每个经过测试的插件使用单个bundle.目前我有一个运行Eclipse产品的PDE版本(大约70个插件,功能和产品).所有插件的所有单元测试都包含在一个普通java项目中,具有对所有插件的Eclipse项目引用,以便能够实例化类并运行测试.由于普通java项目错过了所有目标平台项目,因此我将PDE构建转换为maven tycho时,此设置不再有效.我没有执行真正的OSGI插件测试,但是有些测试要求在类路径中包含IProgressMonitor等核心eclipse类,因为我在自己的方法签名中也使用了这些eclipse运行时接口.
在成功设置新的maven tycho构建之后,我尝试了一些可能性让测试再次运行:
1)将plain-java测试项目转换为插件测试项目
缺点:
- 为了能够在内部包中测试类,我必须使用x-friend:notation导出每个包,并且必须为每个包重复此过程新的测试包
2)在每个插件中添加第二个源文件夹并将测试移动到相应的插件中
缺点:
- Tycho似乎使用build.properties来包含编译步骤所需的源文件夹.由于src/main/java和src/test/java都需要注册为源文件夹,因此真实类和测试类在target/classes输出文件夹中混合,最后包含在插件的JAR文件中.我没有找到一种方法来配置tycho以使用src/main/java作为sourceDirectory和src/test/java作为testSourceDirectory.
- Tycho只执行单元测试,如果包类型是"eclipse-test-plugin"
- Sonar似乎不认识以这种方式执行的测试(我没有花很多时间试图解决这个问题,也许有一个这方面的简单解决方案)
3)将必要的eclipse目标平台插件作为普通的maven依赖添加到plain-java测试项目中
缺点:
- 目标平台信息被复制,一次在目标平台中用于tycho构建,一次在maven依赖列表中测试项目(使用普通的maven-surefire执行)
- 目标平台包在工件中部署两次,一次作为目标平台p2存档,一次作为maven依赖项(插件+ POM)
4)为每个插件添加一个测试片段(这似乎是通常选择的可能性)
缺点:
- 需要付出巨大努力(> 70个插件,> 4500个单元测试),所以我需要添加大约70个新片段并拆分所有测试.
目前,可能性3)对我来说似乎最合理......有什么建议吗?otherideas?
我尝试使用来自两个存储库的OSGI依赖关系创建一个eclipse插件,其中一个具有maven依赖关系,而另一个具有p2依赖关系:
<repositories>
<repository>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>bintray-anrgenstar-genstar-packages</id>
<name>bintray</name>
<url>http://dl.bintray.com/anrgenstar/genstar-packages</url>
</repository>
</repositories>
<repository>
<id>gama</id>
<name>GAMA Snapshots</name>
<url>http://gama.unthinkingdepths.fr</url>
<layout>p2</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
Run Code Online (Sandbox Code Playgroud)
该项目包含一个父pom.xml ummisco.gaml.extensions.parent,用于构建eclipse插件ummisco.gaml.extensions.genstar:
(1)ummisco.gaml.extensions.genstar父级pom.xml定义<module>../ummisco.gaml.extensions.genstar</module>要构建的模块 并调用Tycho maven插件:
<modelVersion>4.0.0</modelVersion>
<groupId>ummisco.gaml.extensions</groupId>
<artifactId>ummisco.gaml.extensions.parent</artifactId>
<version>1.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>../ummisco.gaml.extensions.genstar</module>
</modules>
<properties>
<p2-maven.version>1.2.0-SNAPSHOT</p2-maven.version>
<tycho.version>0.26.0</tycho.version>
<project.version>1.7.0-SNAPSHOT</project.version>
</properties>
<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository> …Run Code Online (Sandbox Code Playgroud) 目前我正在使用tycho来构建和打包我的eclipse RCP应用程序与java 8和eclipse 4.8,(JMSToolBox)
对于Windows发行版,tycho构建过程将JRE v8(Oracle)"复制"到"jre"目录中的分发包中蚂蚁任务
我正在升级到eclipse RCP 2018-09和Java 11(OpenJDK)
出现2个问题:
"jlint"使用我的应用程序使用的eclipse-rcp插件上的一些JDK工具构建特定的JRE ?我很想找到一个正在运行的tycho pom.xml文件的例子
tycho ×10
maven ×6
eclipse-rcp ×5
eclipse ×3
java ×3
p2 ×3
dependencies ×1
icons ×1
java-11 ×1
maven-3 ×1
osgi ×1
pom.xml ×1
summary ×1
swt ×1
unit-testing ×1