如何使用Maven / Tycho构建两个不同版本的e4 RCP应用程序?

时间:2015-03-09 15:23:02

标签: maven rcp tycho e4

我有一个e4 RCP应用程序A。我使用插件B扩展了这个应用程序,它通过片段添加了GUI功能。

我的项目结构如下:

  • 申请A
  • 插件B
  • 目标平台项目
  • 部署项目(使用.product文件)

到目前为止一切顺利。现在,我想部署两个版本的RCP应用程序。一个包含B,另一个包含[ERROR] Internal error: org.eclipse.tycho.p2.target.DuplicateReactorIUsException: Duplicate reactor project IUs. [ERROR] plugin-b 0.1.qualifier => [D:\test\plugin-b, D:\test\plugin-b-repository] [ERROR] -> [Help 1] org.apache.maven.InternalErrorException: Internal error: org.eclipse.tycho.p2.target.DuplicateReactorIUsException: Duplicate reactor project IUs. plugin-b 0.1.qualifier => [D:\test\plugin-b, D:\test\plugin-b-repository] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: org.eclipse.tycho.p2.target.DuplicateReactorIUsException: Duplicate reactor project IUs. plugin-b 0.1.qualifier => [D:\test\plugin-b, D:\test\plugin-b-repository] at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.getPreliminaryReactorProjectUIs(TargetPlatformFactoryImpl.java:369) at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:177) at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:126) at org.eclipse.tycho.p2.target.TargetPlatformFactoryImpl.createTargetPlatform(TargetPlatformFactoryImpl.java:1) at org.eclipse.tycho.p2.manager.ReactorRepositoryManagerImpl.computePreliminaryTargetPlatform(ReactorRepositoryManagerImpl.java:82) at org.eclipse.tycho.p2.resolver.P2DependencyResolver.computePreliminaryTargetPlatform(P2DependencyResolver.java:215) at org.eclipse.tycho.core.resolver.DefaultTychoResolver.resolveProject(DefaultTychoResolver.java:99) at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:75) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:274) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) ... 11 more 。我试着简单地添加第二个部署项目。这在Eclipse IDE中运行良好。

问题是我无法使用Maven构建项目。我收到以下错误:

{{1}}

我如何部署这两个不同的版本?

1 个答案:

答案 0 :(得分:1)

使用版本来实现您的目标是没有意义的。对于版本,总有一个较旧版本和较新版本,新版本最终将取代旧版本。因此,如果您希望所有用户都使用较新版本的RCP应用程序(无论是否有B),为什么还要构建旧版本?

这显然是一个修辞问题:您希望您的用户能够从两种RCP应用程序中进行选择。所以只需给他们一个不同的ID(pom.xml中的artifactId和产品文件中的uid),你的构建就可以了。