Android Maven目录结构

IAm*_*aja 11 java eclipse android maven

我已成功安装和配置了Eclipse的M2E Maven插件,以及Android SDK和ADT.

我想从创建的Android项目 Maven的,所以我觉得这个文章这给安装Android的Maven插件,并使用预先存在的Android的Maven原型用于初始化一个项目的说明.

我按照说明进行了"T",让项目"精心化".

唯一的问题是,我习惯(并且非常喜欢!)以下典型的Maven目录结构:

src/
    main/
        resources/
        java/
    test/
        resources/
        java/
Run Code Online (Sandbox Code Playgroud)

但是,此原型似乎不包含src/test/*目录,只包含src/main/*树.我如何在其中获得测试"子树"?

我想我有两个选择:

  • 查找其他包含它的Android-Maven原型; 要么
  • 自己手动添加test/resourcestest/java源文件夹

我甚至不知道从哪里开始寻找第一个选项,坦率地说,我很害怕尝试第二个选项!我听说改变一个原型的目录结构真的搞乱了构建.

这有什么建议?我有什么明显的遗失吗?提前致谢!

yor*_*rkw 8

这里的"入门"页面查看"注释"部分:

笔记:

  1. 不要在src/test/java中放置想要由Android Maven插件运行的测试.如果您将测试放在那里,Maven将在JVM中将它们作为正常的JUnit测试运行,并在类路径上访问JAR文件,其中包括android.jar.因为android.jar只包含抛出异常的空方法,所以你会得到java.lang.RuntimeException形式的异常:Stub!.相反,测试需要进入src/main/java,在编译过程中它们不会被Maven作为测试运行,但会被包含在apk中并在设备上部署和运行(android.jar具有方法实现)而不是存根).
  2. 如果您有不调用任何Android API的JUnit测试(直接或传递),请将它们放在src/test/java中,以便JUnit在本地运行它们比在设备上运行更快.
  3. 确保Android Maven目标设置为jar-no-fork而不是test-jar-no-fork.即使对于仅包含测试的项目,也要这样做.

更新:
最合适的"测试"子树IMO是src/test/java,如第二点所述,只要你的JUnit测试纯粹是POJO测试,它不涉及任何Android API调用,你会没事的.

我使用src/test/java进行所有Robolectric junit测试,在单独的Android测试项目中进行仪器化测试,所有测试都由maven管理,一切正常.

这里查看Sample MorseFlash项目,其中包括src/test/java作为示例.