Tag: tycho

使用eclipse-plugin包将java插件转换为maven项目

我对java很有经验,但我第一次使用maven。 我已经安装了Eclipse Kepler(Eclipse for RCP和RAP Developers),我已经安装了Tychus以及“添加新软件”按钮。 我克隆并构建了一个称为OM2M 的物联网项目 。 我一步一步地按照安装维基进行操作,直到那时一切正常。 在这里克隆维基 我想开发自己的OSGI模块,所以我去了wiki的’developer’部分并再次创建了一个新的插件项目。 当我尝试将这个插件项目转换为maven项目( 链接到我正在谈论的步骤 )时,我不需要为我的pom wiki截图提供“eclipse-plugin”打包类型。 我在网上查了一下,显然它与需要配置的Tychus有关,我尝试在盒子里输入它但显然我在尝试构建时遇到问题,我尝试用我找到的东西编辑主要的pom.xml但它们都不起作用,我真的不知道该怎么做才能使它发挥作用。 你们有个主意吗? 谢谢 编辑:我忘了提到我读了这个post但是我不明白答案,我不知道在哪里放顶部答案所说的代码也不知道OSGI清单在哪里。 编辑2:当我手工输入eclipse-plugin时我得到的pom.xml:如果我手工编写eclipse-plugin,这是我的pom.xml: 4.0.0 org.eclipse.om2m org.eclipse.om2m.sample.ipu 0.0.1-SNAPSHOT eclipse-plugin 编辑3:我设法通过将主pom.xml设置为父级来删除错误,但现在当我尝试构建时,我有以下错误: [ERROR] Failed to execute goal org.eclipse.tycho:tycho-packaging-plugin:0.20.0:validate-version (default-validate-version) on project org.eclipse.om2m.sample.ipu: Unqualified OSGi version 1.0.0.qualifier must match unqualified Maven version 0.0.1-SNAPSHOT for SNAPSHOT builds -> 我搜索了目标,但我不知道在哪里设置或编辑它们。 编辑4:感谢@Wim Anckaert我已经从pom.xml和清单中删除了.qualifier和.snapshot,现在它似乎正在运行! 非常感谢你们。

在Tycho项目中为非OSGi JUnit测试添加仅测试依赖项

我有几个OSGi-bundle,我用Eclipse Tycho构建。 所有代码依赖关系都是先清除管理的。 现在我想开发一些纯JUnit-Tests来测试bundle-internalfunction。 这些测试不需要OSGi容器来执行,但它们确实需要Mockito。 因为Mockito显然只在运行非OSGi测试时才需要,而不是在捆绑包本身执行期间,所以将依赖项添加到MANIFEST.MF文件是错误的。 我当前的方法是添加了一个包含mockito.jar的项目/ lib文件夹,并且我手动将此jar添加到他的类路径中。 这适用于本地eclipse执行,暂时没问题。 问题是,每个同事都需要将jar添加到类路径中,因为.classpath文件显然没有签入。另外,我猜测最终将在例如构建时执行测试时会出现问题服务器,因为缺少类路径条目。 所以我的问题是:如何以对每个同事轻松工作的方式将依赖项添加到Mockito中,并且在捆绑执行期间不会导致任何问题? 我可以将它作为可选依赖项添加到MANIFEST.MF文件中,但如上所述,它并不像是正确的解决方案。 我可以将mockito-dependency作为正常的pom-first依赖项添加到范围test还是会导致与正常的manifest-first方法冲突? 我还发现了maven-eclipse-plugin ,它提供了一个classpathContainers配置选项,但我没有找到类似的选项来将类库添加到类路径中。 测试位于包本身的src / test / java文件夹中。 将测试依赖项添加到使用eclipse Tycho构建的项目的最佳方法是什么,因为我在技术上不需要Tycho来执行这些测试?

使用Tycho解决对sun.misc包的依赖性

我尝试将基于Buckminster的构建转换为Tycho(0.19.0)。 在我们的(镜像)目标平台中,我们有来自http://lmax-exchange.github.io/disruptor/的软件包com.lmax.disruptor,它导入了包”sun.misc” 当我尝试构建我们自己的bundle(取决于com.lmax.disruptor)时,我得到: [错误]缺少要求:com.lmax.disruptor 3.2.0需要’package sun.misc 0.0.0’但找不到它 我检查了许多Tycho教程,但没有一个包含这样的依赖。 有没有办法从执行的JRE导入该包? 解决方法: 当我将disruptor bundle作为库添加到我的bundle时,它可以正常工作。 但这种接缝更像是一种解决方法,因为我也会有其他依赖它的捆绑包。

Eclipse RCP – 定义依赖关系的所有可能性?

是否存在所有可能性的列表,以在Eclipse RCP项目中定义依赖项? 也许按资源过滤? 可能的依赖关系: 来自其他Eclipse RCP插件 通过包,没有明确定义插件 jar libs …

使用tycho maven将JRE与基于RCP插件的应用程序捆绑在一起

我有基于插件模型的RCP应用程序。 我想把JRE放到由Maven + Tycho创建的最终工件上。 我试着遵循这些推荐 包括-A-JRE-IN-A-第谷建造 捆绑的JRE,沿与-您的产品 我创建了另一个function项目,其中将所需的JRE放在function项目的根目录中。 在我的情况下这个jre / win64。 我为产品定义添加了function。 但我不明白如何通知maven进程负责在我的function项目中创建有关JRE的产品分发我的构建属性文件是 bin.includes=feature.xml root.win32.win32.x86_64= ./jre/win64 我还创建了新的pom.xml并添加到父pom.xml我使用tycho 1.1.0和Eclipse Neon.3作为平台

无法满足从com.lmax.disruptor 3.2.0到sun.misc 0.0.0的依赖性

我正在开发一个需要com.lmax.disruptor的eclipse插件。它导入了sun.misc。 我在我的p2存储库中有这个,但是当我maven构建我的插件时,我收到此错误“无法满足com.lmax.disruptor 3.2.0对sun.misc 0.0.0包的依赖性。” 我已经浏览了网站Resolve对sun.misc包的依赖关系,他们正在创建一个插件片段,但是当我试图创建它并添加导出页面为sun.misc时,它会抛出像“sun sun”这样的错误。 misc不会在插件中存在“。 如何解决这个问题请帮我解决这个问题。 而不是创建新的插件片段,是否有任何可能的方式我可以添加我的插件本身? 谢谢,

如何在tycho中引用mockito?

我目前正试图通过tycho完成我的构建(~30个捆绑)。 在我的unit testing中使用Mockito时遇到了一些令人困惑的问题。 我创建了一个eclipse-test-plugin作为测试包的片段项目。 由于tycho应该使用清单解析所需的bundle,我从pom.xml删除了对mockito的依赖。 然后,当我尝试将mockito添加到清单中的必需包时,mockito未列出。 我找到了这篇文章并创建了一个指向eclipse indigo的目标平台。 我包含了平台细节,所以我不需要eclipse delta包。 然后发生了第一件奇怪的事情。 Eclipse告诉我有一些不可靠的依赖关系,当我在eclipse中将新创建的目标平台设置为活动时,不再有像org.osgi.framework等的包可以通过eclipse解决。 但是当我使用tycho和目标平台构建一个eclipse-product ,它正在运行。 如果我将当前的eclipse安装设置为活动平台,则会解析捆绑包。 我选择了以下的indigo版本: Eclipse RCP插件开发人员资源 Equinox目标组件 Jetty目标组件 所以我的第一个问题是“我的目​​标平台出了什么问题,以便tycho能够使用它而不是eclipse?” 为了更接近我原来的问题(让mockito运行)我将当前的eclipse安装设置为活动目标平台。 Eclipse然后可以解析org.osgi.framework包和其他包。 然后我将之前删除的依赖关系再次添加到了我的pom.xml就像上面提到的那样。 但是当我尝试将它添加到清单中的必需包时,我仍然找不到mockito。 所以我的第二个问题是“我做错了什么?你如何引用未在eclipse更新站点发布的包,例如maven中央存储库?” 更新:在我的研究期间,我发现了两种方法, 即在我的目标平台中包含来自非p2-update-sites的 bundle: Nexus Pro Nexus的专业版支持p2-Proxy存储库,它可以将Maven Central存储库等默认maven存储库包装到p2更新站点,但专业版本每年的成本约为800美元。 创建一个eclipse-repository 您可以使用打包 eclipse-repository 创建一个新的maven项目, 包括所有您想要的包。 然后将创建的工件部署到公共Web服务器。 在您的目标平台中,您可以参考Nexus p2-proxy仓库或Web托管的p2-repo。 有没有人知道其他方式 – 可能更方便/更便宜? 请帮助我理解混乱的tycho世界…… 提前致谢

在集成Maven,Tycho和Eclipse时处理非OSGi依赖项

我有一堆基于Eclipse的插件,我一直在迁移到Maven / Tycho。 大多数这些插件依赖于我现在通过Maven管理的单独库,而不是混淆.jar文件。 我当前设置中最麻烦的部分是由于Tycho显然无法处理仅Maven(即非OSGi)工件。 我目前的设置如下: 在每个Eclipse插件的pom.xml ,我在initialize阶段向maven-dependency-plugin发出unpack目标。 这会将我指定的工件解包到一个单独的target/dependencies录中。 target/dependencies目录被添加为build.properties的输出目录,以便Tycho可以在编译时将其添加到类路径中: source.. = src/main/java/ output.. = target/classes/ output.. = target/dependencies/ target/dependencies目录被添加到META-INF/MANIFEST.MF的Bundle-ClassPath库中。 这些设置允许compile Maven指令来编译插件。 从VCS导入项目并在Eclipse中手动指定target/dependencies项目录作为类文件夹允许所述IDE也编译插件。 不幸的是,由于以下几个原因,这是一个相当麻烦的解决方案: 配置maven-dependency-plugin需要列出应该解压缩的所有工件。 可以使用unpack-dependencies而不是unpack ,但这也会解压所有OSGi依赖项 – 在每个项目目录中解压缩一半的Eclipse并不是我的乐趣…… 在Eclipse中添加类文件夹需要将Maven initialize运行一次,以便创建target/dependencies录。 纯Maven项目与Eclipse中依赖的Tycho项目之间没有源连接。 对于从Maven项目传播到Tycho项目的更改,以便例如Eclipse可能显示潜在的编译问题,必须mvn install Maven项目然后在Tycho项目中运行mvn clean initialize以删除先前解压缩的依赖项和拉入当前设定。 然后你必须刷新Eclipse项目并希望Eclipse做正确的事情。 同样,从Tycho项目查看依赖关系源将不会显示主要源文件,而是显示target/dependencies可用的任何内容 – 很可能只是一个.class文件。 我认为必须有一个更合理的方法来解决这个问题 – 这将允许Eclipse和Maven项目更紧密地集成。 那么,我错过了什么? 这个用例的推荐设置是什么? 还有更好的选择吗? 最好是不需要设置一堆Nexus和/或p2存储库的东西?