Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 第谷——”;“未满足的约束”;在进口包装上_Maven_Osgi_Tycho - Fatal编程技术网

Maven 第谷——”;“未满足的约束”;在进口包装上

Maven 第谷——”;“未满足的约束”;在进口包装上,maven,osgi,tycho,Maven,Osgi,Tycho,我刚从第谷开始,我在早期阶段就被难倒了。也许我误解了什么,所以以防万一,我期望的是:我用OSGi风格定义我的包的需求(即通过导入包在MANIFEST.MF中定义),Tycho以某种方式动态地使用这些信息,而不是我需要用Maven风格重新定义它(即,我不必将依赖项放在pom.xml中) 因此,我在Eclipse中使用m2eclipse插件、m2eclipse tycho插件和PDE插件制作了一个简单的Maven项目,并将以下tycho内容放入pom中: <properties>

我刚从第谷开始,我在早期阶段就被难倒了。也许我误解了什么,所以以防万一,我期望的是:我用OSGi风格定义我的包的需求(即通过导入包
MANIFEST.MF
中定义),Tycho以某种方式动态地使用这些信息,而不是我需要用Maven风格重新定义它(即,我不必将依赖项放在pom.xml中)

因此,我在Eclipse中使用m2eclipse插件、m2eclipse tycho插件和PDE插件制作了一个简单的Maven项目,并将以下tycho内容放入pom中:

<properties>
    <tycho-version>0.15.0</tycho-version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.eclipse.tycho</groupId>
            <artifactId>tycho-maven-plugin</artifactId>
            <version>${tycho-version}</version>
            <extensions>true</extensions>
        </plugin>
    </plugins>
</build>
然后,我希望Tycho以某种方式神奇地发现我需要Netty,因此就好像我在我的Maven pom.xml中插入了如下内容一样:

<dependency>
    <groupId>org.jboss.netty</groupId>
    <artifactId>netty</artifactId>
    <version>3.5.1.Final</version>
</dependency>
我不知道从这里到哪里去。我对第谷应该做什么有一些基本的误解吗?或者我还需要设置其他东西,以便它能够将
MANIFEST.MF
中的
导入包
条目转换为
pom.xml条目,从而实现“神奇”的转换?还是别的什么


提前谢谢。

是的,还有一些障碍需要克服

简言之,您将需要向Tycho提供一个存储库,它可以从中检索依赖项

更详细地说:

  • 您需要设置目标平台,并将其传递给第谷。我想您已经在某种程度上设置了目标平台,否则Eclipse也会抱怨没有找到Netty
  • 确保在您的工作区中共享您的目标平台,以便Tycho也可以访问它
  • 告诉第谷使用目标平台,就像
  • Tycho兼容的目标平台只支持p2布局,因此没有普通目录。我不确定什么是最好的方式,使p2回购这样,因为我已经问了一个问题。没有任何答案,但我确实在那里解释了什么对我有用

希望这能有所帮助,Frank

您的理解已经相当不错了,但是缺少了一个小而重要的部分:与Maven不同,Tycho中没有规范的默认存储库(如“central”)。您需要配置Tycho搜索解决OSGi依赖关系的位置


此搜索范围在Tycho中称为“”。有,;最简单的方法是使用附加的
p2
属性配置POM中包含依赖项的p2存储库(假设您知道包含依赖项的p2存储库)。

还可以通过额外的依赖项配置将缺少的包直接添加到失败的包:

<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
  <dependency-resolution>
   <extraRequirements>
    <requirement>
     <type>eclipse-plugin</type>
     <id>org.eclipse.jface.text</id>
     <versionRange>0.0.0</versionRange>
   </requirement>
  </extraRequirements>
 </dependency-resolution>
</configuration>
</plugin>

org.eclipse.tycho
目标平台配置
${tycho.version}
eclipse插件
org.eclipse.jface.text
0.0.0

谢谢!目标平台是我所缺少的。
Unsatisfied constraint: 'Import-Package: org.jboss.netty.channel;version="[3.5.1,4.0.0)"
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
  <dependency-resolution>
   <extraRequirements>
    <requirement>
     <type>eclipse-plugin</type>
     <id>org.eclipse.jface.text</id>
     <versionRange>0.0.0</versionRange>
   </requirement>
  </extraRequirements>
 </dependency-resolution>
</configuration>
</plugin>