Не удается разрешить зависимость Mockito в проекте Tycho
Возможный дубликат:
Как ссылаться на мокито в Тихо?
Я пытаюсь получить тестовый проект с использованием Tycho, но он не может разрешить зависимости, перечисленные в моем pom, из центрального репозитория Maven, который указан в моем родительском pom. Вот соответствующая часть из моего родительского пом:
<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>
и вот моя особенность пом:
<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 в своем проекте, я получаю следующее:
[INFO] Добавление репозитория http://download.eclipse.org/releases/helios/[INFO] Добавление репозитория http://download.eclipse.org/releases/helios/[DEBUG] Добавлены гелий-репозиторий p2 ( http://download.eclipse.org/releases/helios/) [DEBUG] Игнорирование центрального хранилища Maven ( http://repo1.maven.org/maven2)
и тогда моя сборка не удалась, потому что моя зависимость не может быть решена. Я что-то пропустил? Это из-за решателя p2, настроенного для целевой платформы?
1 ответ
На самом деле, похоже, ты прав.
Сначала создайте файл определения цели (.target) и поместите его в проект Maven, см. Здесь, например, цель: https://github.com/eclipsesource/com.eclipsesource.tycho.aspectj.demo/blob/master/platform/indigo.target
Вам необходимо прикрепить файл.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 или проектах подключаемых модулей, использующих этот целевой файл определения, необходимо настроить "цель" подключаемого модуля 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 (пока?), Наряду с "Directory" и "Features".
Решение. Используйте целевой источник "Обновление сайта".
Если у вас еще нет сайта обновления, вот для создания сайта обновления из 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 - это папка, в которой будет создан новый сайт обновлений.
- источник - вы догадались - папка / установка, содержащая оригинальные пакеты