android - 是否可以设置一个IntelliJ Android项目以与Maven一起使用?

标签 android maven intellij-idea

我想在IntelliJ Android项目中使用Maven依赖项。有人成功做到了吗?

最佳答案

我在Ubuntu 11.10和Mac OS X 10.7.3上都使用了IntelliJ IDEA(当前为v11.0.2,内部版本111.277)来处理基于Maven的Android项目,并且在大多数情况下都能正常工作。将IntelliJ与Android和Maven结合使用的好处是,所有支持都已内置-无需安装额外的IDE插件。

作为可以使用IntelliJ打开的运行良好的Android Maven项目的示例,您可以使用GitHub开源Gaug.es for Android应用程序的源代码(并非GitHub上的所有开发人员都使用IntelliJ,我个人是这样做的-Eclipse也用于在这个项目上工作)。

平稳运行的第一步显然是确保在命令行上仅使用普通Maven即可正确构建项目-尽管问题并没有直接询问,但我建议这些先决条件是最低限度的要求:

  • Java 6
  • Maven v3.0.3
  • android-maven-plugin v3.1.1
  • Android SDK r16(如果您在r15之前下载了SDK,则最好对整个内容进行核对,然后重新下载所有内容,因为目录布局已更改)

    如果您可以mvn install项目的父pom,则最好继续使用IntelliJ进行实际操作。
  • 如果这是第一次使用IntelliJ打开项目,您仍然可以将其作为项目打开,只需在“打开项目”对话框中选择父pom.xml文件。
  • 确保IntelliJ知道Java SDK在哪里。即使IntelliJ在Java上运行,它也不会自动检测SDK的位置。你必须告诉它。转到Project StructurePlatform SettingsSDKs,然后编辑Java SDK(如果显示为红色),并为其提供Java 6 SDK的路径。
  • 在同一Project Structure对话框窗口中,将Project SDK设置为适当的Android版本,然后在Project下将Project compiler output设置为您喜欢的任何目录名称-执行“Make”时需要此值,但子模块也将其覆盖指向Maven的“目标”目录。
  • 再次检查IntelliJ是否已解析所有Maven信息。您应该有一个Maven Projects标签。点击Reimport All Maven Projects按钮(看起来像两个箭头互相追逐)。如果IntelliJ提示您启用自动导入,请继续。现在,您应该至少在Maven Projects选项卡下列出了一个模块,如果还有集成测试项目,则应该更多。

  • 此时,您应该具有相当有意义的IDE体验。应该起作用的东西:
  • 出于显而易见的原因,不应使用红色下划线标记代码。
  • 应该识别所有导入(无论是从Android SDK,Java,您自己的代码还是从apklibs导入)。请注意,apklib支持仅在较晚的IntelliJ IDEA v10.5中提供。
  • 重构操作。
  • Force regenerate R.java file应该正确刷新target/generated-sources/r/...下的文件-但这仅在target/generated-sources/r已设置为源路径(即已由Maven生成并由IntelliJ导入)时才起作用。最小的命令行替代方法是从受影响模块的文件夹中的命令行执行mvn android:generate-sources
  • 在IDE内对项目进行“制作”在技术上是可行的,但由于相同的原因可能再次失败。我在命令行上使用mvn packageinstall调用所有构建。

  • 可能无法正常工作的资料:
  • 从IDE运行单独的集成测试(带有ClassNotFoundException: junit.textui.ResultPrinter的模块)

  • 如果IntelliJ感到困惑,以下步骤通常会使您重回正轨:

    命令行上的
  • mvn clean install
  • 按下Reimport All Maven Projects按钮

  • 一些忠告:
  • 您的Maven pom.xml文件应该是项目配置的真实来源。最小化您在项目设置中执行的特定于IntelliJ的配置-在下次从Maven POM重新导入设置时,其中某些内容可能会被删除-并尝试避免将IntelliJ项目文件提交到源代码管理中。

  • 希望对您有所帮助!

    关于android - 是否可以设置一个IntelliJ Android项目以与Maven一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7452771/

    相关文章:

    angular - 为什么从 es2015 到 esm2015 编译 Angular 依赖会删除环境中的 html 标签?

    java - Intellij IDEA 中的 "Cannot resolve symbol"

    debugging - Intellij 想法 在不停止完整调试的情况下停止执行函数

    android - 在 android 中将 16 位 pcm 音频下采样为 8 位

    android - 使用 Android XML 的节标题?

    java - Android应用程序,从res读取文本文件

    java - Spring Maven项目结构pom.xml

    android - ViewPagerAdapter : YouTube video playback stopped due to unauthorized overlay on top of player

    java - 使用具有不可嵌入依赖项的 Maven 设置集成测试环境

    android - 在 Jenkins 错误上使用 Maven 构建