解决接触点操作时出错

时间:2018-08-15 21:43:14

标签: eclipse maven tycho

我正在尝试使用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.

1 个答案:

答案 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时遇到了问题,我们正在以供应商依赖的方式使用它。