Java 在Maven构建期间安装Android SDK

Java 在Maven构建期间安装Android SDK,java,android,maven,robolectric,Java,Android,Maven,Robolectric,我正在尝试使用Maven和Robolectric自动测试我的Android应用程序。我遇到的问题是,我不会在本地机器上运行测试,而且运行测试的机器上也不会安装Android SDK。我使用maven依赖插件从我们的存储库中获取sdk,并在流程资源阶段将其解包,问题是,这是在需要访问文件之后发生的。当我尝试使用apk包时,它永远不会下载SDK,因为它找不到SDK。所以我的问题是:是否有可能在构建中发生任何其他事情之前触发此下载?如果有人对如何在构建时正确安装sdk有任何了解,我们将不胜感激。请告诉

我正在尝试使用Maven和Robolectric自动测试我的Android应用程序。我遇到的问题是,我不会在本地机器上运行测试,而且运行测试的机器上也不会安装Android SDK。我使用maven依赖插件从我们的存储库中获取sdk,并在流程资源阶段将其解包,问题是,这是在需要访问文件之后发生的。当我尝试使用apk包时,它永远不会下载SDK,因为它找不到SDK。所以我的问题是:是否有可能在构建中发生任何其他事情之前触发此下载?如果有人对如何在构建时正确安装sdk有任何了解,我们将不胜感激。请告诉我是否可以添加任何其他信息。

Robolectric和maven android插件都需要SDK。Android插件需要构建工具/adb,而Robolectric需要相应的Android.jar

因此,您必须为以下各项创建maven任务/目标:

  • 从某个url下载SDK zip
  • 在测试机上的一个目录中解压zip
  • 更新POM的
    android.sdk.path
    属性,指向sdk目录
  • 我找到的一些片段可能会有所帮助:

    下载:

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>wagon-maven-plugin</artifactId>
        <version>1.0-beta-3</version>
        <executions>
            <execution>
                <id>download-android-sdk</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>download-single</goal>
                </goals>
                <configuration>
                    <url>http://dowloadsite.com/<url>
                    <fromFile>/downloads/sdk.zip</fromFile>
                    <toDir>${project.build.directory}/sdk</toDir>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
    
    org.codehaus.mojo
    货车司机插件
    1.0-beta-3
    下载android sdk
    预集成测试
    下载单曲
    http://dowloadsite.com/
    /下载/sdk.zip
    ${project.build.directory}/sdk
    
    拆包:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <executions>
            <execution>
                <id>unpack-sdk</id>
                <phase>pre-integration-test</phase>
                <configuration>
                    <tasks>
                        <unzip src="${project.build.directory}/sdk/sdk.zip" dest="${project.build.directory}/sdk/" />
                    </tasks>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    
    
    org.apache.maven.plugins
    maven antrun插件
    1.6
    解包sdk
    预集成测试
    跑
    
    我实际上已经完成了所有这些事情。问题是,正如我所提到的,在需要之前,它不会发生,我将尝试您列出的预集成测试阶段。更改阶段没有运气。@user248379不如
    validate
    phase?简短的回答是否定的,这在maven预定义的生命周期内是不可能的。你能解释为什么吗?我不太喜欢Maven之类的。