当前位置: 首页 > 知识库问答 >
问题:

Tycho无法解析tycho-surefire-plugin中配置的依赖项

商开济
2023-03-14
[ERROR] Cannot resolve project dependencies:
[ERROR]   You requested to install 'myproject.app.feature.feature.group 1.0.0' but it could not be found
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test (default-test) on project myproject.app.viewmanager-test: Execution default-test of goal org.eclipse.tycho:tycho-surefire-plugin:0.21.0:test failed: No solution found because the problem is unsatisfiable.: [Unable to satisfy dependency from tycho-extra-1408913392535 0.0.0.1408913392535 to myproject.app.feature.feature.group 1.0.0.; Unable to satisfy dependency from tycho-1408913392552 0.0.0.1408913392552 to myproject.app.feature.feature.group 1.0.0.; No solution found because the problem is unsatisfiable.] -> [Help 1]

值得说的是,当我在Eclipse内部运行单元测试时(而不是在Maven中),它是有效的。

这是我测试片段中的第谷配置:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-surefire-plugin</artifactId>
    <version>${tycho-version}</version>
    <configuration>
        <useUIHarness>true</useUIHarness>

        <dependencies>
            <dependency>
                <type>eclipse-feature</type>
                <artifactId>myproject.app.feature</artifactId>
                <version>1.0.0</version>
            </dependency>
        </dependencies>

    </configuration>
</plugin>

正如这里所建议的,我将这个特性作为一个依赖项添加,因为我的测试片段除了它的主机之外还需要一些其他的包,所以我希望这能起作用。

共有1个答案

孙梓
2023-03-14

从Tycho 0.21.0开始,在tycho-surefire-plugin中对声明Reactor项目的依赖关系的支持有限:只有当测试项目已经对引用的Reactor项目有其他依赖关系时,它们才起作用。在您的用例中,当您向特性添加依赖项时,情况并非如此。

您可以通过将POM依赖项添加到功能项目中来使tycho-surefire-plugin依赖项配置再次工作:

<dependencies>
   <dependency>
      <!-- Maven GAV of the feature project -->
      <groupId>myproject.groupId</groupId>
      <artifactId>myproject.app.feature</artifactId>
      <version>1.0.0-SNAPSHOT</version>
   </dependency>
</dependencies>

<build>
   <plugins>
      <plugin>
         <groupId>org.eclipse.tycho</groupId>
         <artifactId>tycho-surefire-plugin</artifactId>
         <version>${tycho-version}</version>
         <configuration>
            <dependencies>
               <dependency>
                  <type>eclipse-feature</type>
                  <artifactId>myproject.app.feature</artifactId>
                  <version>1.0.0</version>
               </dependency>
            </dependencies>
         </configuration>
      </plugin>
   </plugins>
</build>

但是,指定额外测试依赖项的推荐方法是在目标平台配置中进行,而不是在tycho-surefire-plugin上:

<plugin>
   <groupId>org.eclipse.tycho</groupId>
   <artifactId>target-platform-configuration</artifactId>
   <configuration>
      <dependency-resolution>
         <extraRequirements>
            <requirement>
               <type>eclipse-feature</type>
               <id>myproject.app.feature</id>
               <versionRange>1.0.0</versionRange>
            </requirement>
         </extraRequirements>
      </dependency-resolution>
   </configuration>
</plugin>

注意:与tycho-surefire-plugin相比,指定依赖项的元素名在target-platform-configuration中是不同的。因此,在迁移配置时,需要修改标记名:

  • (未更改)

备注:尽管标记名不同,但元素的语义是相同的:因此,即使旧名称为 ,该值始终被解释为版本范围。包含单个版本(如1.0.0)的版本范围表示没有上限的版本范围,即1.1.0或更高版本。

 类似资料:
  • 我们用Maven和Tycho构建了一个Eclipse插件。然而,目前我们仍然通过一堆手动添加的JAR文件而不是Maven来提供所有的项目依赖。这是由于以下原因:(1)依赖项不能通过标准的Eclipse更新站点获得(至少不能在当前版本中获得),(2)依赖项不能作为捆绑包获得。 这些依赖项中最大的部分是Selenium库(API,远程,特定于浏览器的库及其传递依赖项,例如Guava等)。 我浪费了几个

  • 我有一个Tycho构建,它为Xtext DSL功能生成eclipse插件。我现在想做一个maven插件,它可以处理DSL文件。问题是要将DSL插件所依赖的工件放入maven插件中,因为这些工件不在maven存储库中。此外,我希望maven插件自动依赖于DSL插件所依赖的相同工件。 我认为创建一个带有依赖项的 über-jar 将是最好的方法。问题是检索 DSL 插件的依赖项并将其复制到一个目录中,

  • 我创建了一个带有 打包的第谷项目。该项目包括一些通过 pom.xml 指定的依赖项。相关的pom部分是: 清单是: 该项目仅包含默认包中的一个类,该类使用来自< code > org . TestNG . annotations 的注释来测试编译期间是否包含依赖项。 如果我使用Maven 3.0.4在命令行上构建项目,一切正常。在Eclipse Juno中导入项目后,我收到了多个错误。最重要的一个

  • 我目前正面临这个问题。该项目以前没有任何构建问题。直到今天,当我试图构建它时,才出现了这个错误。 Gradle:配置项目“:project”时出现问题。

  • 我在为ZBarScannerActivityLib库项目从命令行执行gradle build时收到此错误。详细错误消息如下 *配置项目“:ZBARScannerActivityLib”时出现问题。

  • 我似乎无法获得最新版本的构建工具。我怀疑这与Gradle的代理设置有关。我已经很好地看了网上,但仍然不能找到一个解决办法。我用的是2.1级。 SystemProp.http.ProxyHost=代理SystemProp.http.ProxyPort=80 SystemProp.http.ProxyUser=MyUserName SystemProp.http.ProxyPassword=密码 Sy