Не удается разрешить зависимость 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 - это папка, в которой будет создан новый сайт обновлений.
  • источник - вы догадались - папка / установка, содержащая оригинальные пакеты
Другие вопросы по тегам