无法解析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
注意:
上一篇: Cannot resolve Mockito dependency in a Tycho project
下一篇: How to pass a value from a fixture to a test with clojure.test?