无法解析Tycho项目中的Mockito依赖项

可能重复:
如何引用tycho内的mockito?

我正在尝试使用Tycho获得测试功能项目构建,但未能解决列表中列出的依赖关系,这些依赖项来自我的父pom中列出的Maven中央存储库。 以下是我父母的相关部分:

    <properties>
            <tycho-version>0.12.0</tycho-version>
    </properties>

    <repositories>
            <repository>
                    <id>helios</id>
                    <layout>p2</layout>
                    <url>http://download.eclipse.org/releases/helios/</url>
            </repository>
    </repositories>

    <pluginRepositories>
            <pluginRepository>
                    <id>central</id>
                    <name>Maven Plugin Repository</name>
                    <url>http://repo1.maven.org/maven2</url>
                    <layout>default</layout>
                    <snapshots>
                            <enabled>false</enabled>
                    </snapshots>
                    <releases>
                            <updatePolicy>never</updatePolicy>
                    </releases>
            </pluginRepository>
    </pluginRepositories>

    <build>
            <plugins>
                    <plugin>
                            <groupId>org.eclipse.tycho</groupId>
                            <artifactId>tycho-maven-plugin</artifactId>
                            <version>${tycho-version}</version>
                            <extensions>true</extensions>
                    </plugin>
                    <plugin>
                            <groupId>org.eclipse.tycho</groupId>
                            <artifactId>target-platform-configuration</artifactId>
                            <version>${tycho-version}</version>

                            <configuration>
                                    <pomDependencies>consider</pomDependencies>

                                    <resolver>p2</resolver>

                                    <environments>
                                            <environment>
                                                    <os>linux</os>
                                                    <ws>gtk</ws>
                                                    <arch>x86_64</arch>
                                            </environment>
                                            <environment>
                                                    <os>win32</os>
                                                    <ws>win32</ws>
                                                    <arch>x86</arch>
                                            </environment>
                                    </environments>
                            </configuration>
                    </plugin>
            </plugins>
    </build>

在这里我的功能pom:

    <modelVersion>4.0.0</modelVersion>
    <parent>
            <artifactId>parent</artifactId>
            <groupId>com.example</groupId>
            <version>1.0.0-SNAPSHOT</version>
    </parent>
    <groupId>com.example</groupId>
    <artifactId>com.example.testing.feature</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>eclipse-feature</packaging>

    <dependencyManagement>
            <dependencies>
                    <dependency>
                            <groupId>org.mockito</groupId>
                            <artifactId>mockito-all</artifactId>
                            <version>1.8.5</version>
                    </dependency>
            </dependencies>
    </dependencyManagement>

    <dependencies>
            <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-all</artifactId>
            </dependency>
    </dependencies>

当我在我的特性项目上运行mvn clean package时,我得到以下结果:

[INFO]添加资源库http://download.eclipse.org/releases/helios/ [INFO]添加资源库http://download.eclipse.org/releases/helios/ [DEBUG]添加p2资源库helios(http:// download.eclipse.org/releases/helios/)[DEBUG]忽略Maven repository central(http://repo1.maven.org/maven2)

然后我的构建失败,因为我的依赖不能解决。 我错过了什么吗? 这是因为为目标平台配置配置了p2解析器吗?


事实上,你似乎是对的。

首先,创建一个目标定义文件(.target)并将其放入Maven项目中,请参阅此处的示例目标:https://github.com/eclipsesource/com.eclipsesource.tycho.aspectj.demo/blob/master/platform /indigo.target

您需要使用build helper将.target文件附加到工件上:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <id>attach-artifacts</id>
            <phase>package</phase>
            <goals>
                <goal>attach-artifact</goal>
            </goals>
            <configuration>
                <artifacts>
                    <artifact>
                        <file>indigo.target</file>
                        <type>target</type>
                        <classifier>indigo</classifier>
                    </artifact>
                </artifacts>
            </configuration>
        </execution>
    </executions>
</plugin>

(从https://github.com/eclipsesource/com.eclipsesource.tycho.aspectj.demo/blob/master/platform/pom.xml)

然后,在父POM或使用该目标定义文件的插件项目中,需要配置target-platform-configuration Maven插件的“目标”,例如:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>target-platform-configuration</artifactId>
    <version>${tycho-version}</version>
    <configuration>
        <resolver>p2</resolver>
        <ignoreTychoRepositories>true</ignoreTychoRepositories>
        <target>
            <artifact>
                <groupId>com.eclipsesource.sandbox.weaving.demo</groupId>
                <artifactId>com.eclipsesource.sandbox.weaving.demo.platform</artifactId>
                <version>0.1.0-SNAPSHOT</version>
                <classifier>indigo</classifier>
            </artifact>
        </target>
        <environments>
            <environment>
                <os>${build.os}</os>
                <ws>${build.ws}</ws>
                <arch>${build.arch}</arch>
            </environment>
        </environments>
    </configuration>
</plugin>

(取自https://github.com/eclipsesource/com.eclipsesource.tycho.aspectj.demo/blob/master/releng/pom.xml)

那么你的项目应该使用Tycho很好地构建。 :-)如果您的.target引用远程p2存储库并且不在p2捆绑包池中,则必需的工件将自动下载。

祝你好运!

已知问题:

[WARNING] Target location type: Profile is not supported

从Tycho 0.12.0起,这意味着“Eclipse安装”目标源类型不能与Tycho(还有?)一起使用,以及“目录”和“功能”。

解决方案:使用“更新站点”目标源。

如果您还没有更新站点,则可以从Eclipse(或者包含捆绑包的任何文件夹)中生成更新站点:

/opt/eclipse_rcp/eclipse -consolelog -nosplash -verbose 
  -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher 
  -metadataRepository file:/home/ceefour/p2/bonita/ 
  -artifactRepository file:/home/ceefour/p2/bonita/ 
  -source /home/ceefour/BOS-5.5.1/studio/ 
  -publishArtifacts

注意:

  • 将/ opt / eclipse_rcp更改为您自己的Eclipse SDK安装
  • metadataRepository和artifactRepository是将在其中创建新更新站点的文件夹
  • 来源是 - 你猜对了 - 包含原始包的文件夹/安装
  • 链接地址: http://www.djcxy.com/p/52311.html

    上一篇: Cannot resolve Mockito dependency in a Tycho project

    下一篇: How to pass a value from a fixture to a test with clojure.test?