Problem with p2.inf file when building eclipse product
I have an eclipse product that depends on a feature. Now I would like to be able to update this feature. I would also like to be able to start the application with a predefined update site. I have created a p2.inf file which contains (based on: http://aniefer.blogspot.com/2009/07/composing-and-updating-custom-eclipse.html):
requires.0.name = com.application.feature.group
requires.0.range = [1.0.0.qualifier, 2.0.0.qualifier)
instructions.configure=\
addRepository(type:0,location:https${#58}//ccp.com/);\
addRepository(type:1,location:https${#58}//ccp.com/);
But the updatesite ccp.com does not shown when I go to the install manager in the build product (it works fine if I remove the 'requires' commands).
Are there anything wrong with the above p2.inf file?
I have now tried:
requires.0.namespace=org.eclipse.equinox.p2.iu
requires.0.name = com.application.feature.group
requires.0.range = [1.0.0.qualifier, 2.0.0.qualifier)
instructions.configure=\
addRepository(type:0,location:https${#58}//ccp.com/);\
addRepository(type:1,location:https${#58}//ccp.com/);
but when I build it I get the error:
Cannot complete the install because one or more required items could not be found.
Software being installed:
MyProduct 1.0.0.201102161136 (com.application.product 1.0.0.201102161136) Missing requirement:
MyProduct 1.0.0.201102161136 (com.application.product 1.0.0.201102161136) requires 'com.application.fea开发者_JAVA技巧ture.group [1.0.0.qualifier,2.0.0.qualifier)'
but it could not be found
Application failed, log file location: ...
I have also tried to remove the qualifier from the p2.inf file in the version range and on my feature, but get the same error. Any ideas?
Try adding
requires.0.namespace=org.eclipse.equinox.p2.iu
I suspect that not specifying the namespace leaves it as null in the p2.inf parser, eventually leading to an assertion failure on a Assert.isNotNull(namespace)
, or an NPE. Either of these would probably cause the entire p2.inf file to be ignored.
I found that I needed to use the p2.context.repos option to pass in the repositories containing the items referred to in p2.inf. Using this and pluginPath in tandem was the key.
精彩评论