无法在Tycho项目中解决Mockito依赖项

时间:2011-06-07 18:09:07

标签: maven-3 tycho

  

可能重复:
  How to reference mockito within 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>

在这里我的功能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包时,我得到以下内容:

[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存储库中心(http://repo1.maven.org/maven2

然后我的构建失败,因为我的依赖关系无法解决。我错过了什么吗?这是因为为target-platform-configuration配置了p2解析器吗?

1 个答案:

答案 0 :(得分:7)

确实看来你是对的。

首先,创建目标定义文件(.target)并将其放在Maven项目中,请参阅此处,例如target: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或使用该目标定义文件的插件项目中,您需要配置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开始,它意味着带有Tycho的“Eclipse安装”目标源类型cannot be used(还有?),以及“目录”和“功能”。

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

如果您还没有更新站点,请从Eclipse(或任何包含bundle的文件夹)生成更新站点:

/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是将创建新更新站点的文件夹
  • 来源是 - 你猜对了 - 包含原始包的文件夹/安装