Android Maven目录结构

时间:2012-01-12 20:07:48

标签: java android eclipse maven

我已经成功安装了&为Eclipse配置了M2E Maven插件,以及Android SDK和ADT。

我想从里面 Maven创建Android项目,所以我找到了this文章,其中提供了有关安装Android-Maven插件和使用预先存在的Android-Maven的说明用于初始化项目的原型。

我按照说明去了" T"得到了项目" mavenified"精美。

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

src/
    main/
        resources/
        java/
    test/
        resources/
        java/

但是,这个原型似乎不包含src/test/*目录,只包含src/main/*树。 如何获得测试"子树"在他们的?

我想我有两个选择:

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

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

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

1 个答案:

答案 0 :(得分:8)

查看“使用入门”页面here中的“备注”部分:

  

注意:

     
      
  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.   
  3. 如果您的JUnit测试没有调用任何Android API(直接或传递),请将它们放在src / test / java中,以便JUnit在本地运行它们比在设备上运行更快。
  4.   
  5. 确保Android Maven目标设置为jar-no-fork而不是test-jar-no-fork。即使对于仅包含测试的项目,也要执行此操作。
  6.   

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

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

查看示例MorseFlash项目here,其中包括src / test / java作为示例。