我正在尝试使用tycho / maven技术为基于Eclipse的产品创建P2构建。我们依赖的功能之一包含并使用接触点操作。我们从另一个产品中将其作为供应商依赖项来使用。该产品是使用其他构建工具构建的,因此扩展点位于plugin.xml下。当我们的构建尝试找到该接触点操作时,它将查找功能common.p2.manager,该功能既具有依赖于接触点的插件(带有p2.inf文件),又包括包含接触点的插件。它正在目标/存储库中寻找操作,但是该操作实际上在common.p2.touchpoint中。我们无法弄清楚的是如何直接指向此插件或如何通过Tycho将其添加到运行时。例如,即使在plugin.xml中已经存在该依赖项,我们仍应列出该POM中的某个位置?另外,我们还被告知此接触点仅用于安装时,因此有没有办法告诉Tycho在构建时忽略它?我们尝试了“ mvn verify”命令,但得到的结果与使用“ mvn install”命令时的结果相同。我也尝试过将其添加到我的category.xml文件中,以确保已添加它,但这也不起作用。对解决以下所示错误有任何建议吗?
接触点p2.inf如下所示:
## Ensuring p2 touchpoint plugin installed before this plugin
metaRequirements.0.namespace=org.eclipse.equinox.p2.iu
metaRequirements.0.name=p2.touchpoint
metaRequirements.0.range=[0.0.0,5.0.0)
# During install phase,
# 1--> Set the p2 home dir during install phase of this plugin.
instructions.configure = \
p2.touchpoint.setp2home();
# Unset the p2 home dir during uninstall phase of this plugin.
instructions.uninstall = \
p2.touchpoint.unsetp2home();
plugin.xml通过扩展点调用此接触点操作:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.equinox.p2.engine.actions">
<action
class="p2.touchpoint.ProvisioningSetP2Home"
name="setp2home"
touchpointType="org.eclipse.equinox.p2.osgi"
version="1.0.0">
</action>
</extension>
<extension
point="org.eclipse.equinox.p2.engine.actions">
<action
class="p2.touchpoint.ProvisioningUnSetP2Home"
name="unsetp2home"
touchpointType="org.eclipse.equinox.p2.osgi"
version="1.0.0">
</action>
</extension>
</plugin>
错误提示:
An error occurred while configuring the installed items
session context was:(profile=DefaultProfile, phase=org.eclipse.equinox.internal.p2.engine.phases.Configure, operand=null --> [R]common.p2.manager 4.2.0.v20161115_2041, action=org.eclipse.equinox.internal.p2.engine.MissingAction).
No action found for: common.p2.touchpoint.setp2home.
答案 0 :(得分:-1)
嗨,格雷格,我们已经在使用tycho的p2 Director插件来构建我们的P2
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho.version}</version>
<executions>
<execution>
<phase>package</phase>
<id>materialize-products</id>
<goals>
<goal>materialize-products</goal>
</goals>
<configuration>
<products>
<product>
<id>project</id>
<rootFolder>${rootFolder}</rootFolder>
</product>
</products>
</configuration>
</execution>
<execution>
<phase>pre-integration-test</phase>
<id>archive-products</id>
<goals>
<goal>archive-products</goal>
</goals>
<configuration>
<formats>
<linux>tar.gz</linux>
</formats>
</configuration>
</execution>
</executions>
</plugin>
而且我们仍然遇到这个问题。我们在这里缺少什么吗? 问题是我们没有在代码上使用/建立我们自己的接触点,我们在使用tycho解决此plugin.touchpoint时遇到了问题,我们正在以供应商依赖的方式使用它。