是否可以设置IntelliJ Android项目与maven一起使用?

Ale*_*rov 32 android intellij-idea maven

我想在IntelliJ Android项目中使用maven依赖项.有没有人成功使用IntelliJ来处理使用maven的Android项目?

Rob*_*ley 44

我在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 Structure,Platform Settings,SDKs然后编辑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,您自己的代码还是来自apklib).请注意,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项目文件提交到源代码控制中.

希望有所帮助!


Ana*_*liy 12

请参阅maven-android-plugin入门.

这里可以使用命令创建具有Maven结构的sampe工作模板:

mvn archetype:generate \
  -DarchetypeArtifactId=android-with-test \
  -DarchetypeGroupId=de.akquinet.android.archetypes \
  -DarchetypeVersion=1.1.0 \
  -DgroupId=com.foo.bar \
  -DartifactId=my-android-project \
  -Dpackage=com.foo.bar.android
Run Code Online (Sandbox Code Playgroud)

顺便说一句,IntelliJ内置了对maven的支持,所以只需从它打开pom.xml - 一切都会好的.