Java Android Maven目录结构

Java Android Maven目录结构,java,android,eclipse,maven,Java,Android,Eclipse,Maven,我已经成功地为Eclipse安装并配置了M2E Maven插件,以及Android SDK和ADT 我想从Maven内部创建Android项目,因此我找到了一篇文章,其中给出了安装Android Maven插件的说明,并使用预先存在的Android Maven原型初始化项目 我按照指示完成了一个“T”,并将项目完美地“mavenified” 唯一的问题是,我已经习惯(并且非常喜欢!)以下典型的Maven目录结构: src/ main/ resources/

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

我想从Maven内部创建Android项目,因此我找到了一篇文章,其中给出了安装Android Maven插件的说明,并使用预先存在的Android Maven原型初始化项目

我按照指示完成了一个“T”,并将项目完美地“mavenified”

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

src/
    main/
        resources/
        java/
    test/
        resources/
        java/
但是,这个原型似乎不包含
src/test/*
目录,只包含
src/main/*
我如何在他们的文档中获取测试“子树”?

我想我有两个选择:

  • 找到包含它的不同Android Maven原型;或
  • 手动添加
    test/resources
    test/java
    源文件夹
我甚至不知道从哪里开始寻找第一个选择,坦白说,我害怕尝试第二个!我听说更改原型的目录结构会把构建搞得一团糟


你有什么建议?这里有什么明显的我遗漏的吗?提前谢谢

从入门页面查看备注部分:

注:

  • 不要在src/test/java中放置要由Android Maven插件运行的测试。如果您将测试放在那里,Maven将它们作为JVM中的普通JUnit测试运行,JAR文件可以在类路径(包括android.JAR)上访问。因为android.jar只包含抛出异常的空方法,所以可以得到java.lang.RuntimeException:Stub!形式的异常!。相反,这些测试需要放在src/main/java中,在编译过程中,Maven不会将它们作为测试运行,而是将它们包含在apk中,并在设备上部署和运行(其中android.jar具有方法实现,而不是存根)
  • 如果您的JUnit测试不调用任何Android API(直接或传递),请将它们放在src/test/java中,以便JUnit在本地运行,并且比在设备上运行更快
  • 确保androidmaven目标设置为jarno-fork而不是testjarno-fork。即使只包含测试的项目也要这样做
  • 更新:
    最合适的“test”子树IMO是src/test/java,如第二点所述,只要JUnit测试是纯POJO测试,不涉及任何Android API调用,就可以了

    我在单独的Android测试项目中使用src/test/java进行所有junit测试和仪器化测试,所有这些都由maven管理,对我来说一切都很好


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

    非常有趣-谢谢!但这就引出了一个问题,那么什么才是合适的“测试”子树呢?我喜欢将我的主类保存在
    src/main/java
    下,然后在
    src/test/java
    下复制相同的包树。因此,
    com.foo.Widget
    类将位于
    src/main/java/com/foo
    ,并将在URI
    src/test/java/com/foo/widgetest
    进行单元测试。这个“
    src/main/java
    -only”范式现在如何适应这样的结构?请注意。通过编写一个可以构建为普通maven java项目的库项目,您可以获得更高的生产率。在其中放置适当的功能意味着您可以更快地构建和测试。