【问题标题】:Unresolved maven android dependency when building in IntelliJ在 IntelliJ 中构建时未解决的 maven android 依赖项
【发布时间】:2013-07-01 22:39:57
【问题描述】:

我在我的 Android 项目中使用 Maven,以及 android-maven-plugin。在我的项目 pom.xml 文件中,我像这样声明依赖项:

<dependency>
  <groupId>com.viewpagerindicator</groupId>
  <artifactId>library</artifactId>
  <version>2.4.1</version>
  <type>apklib</type>
</dependency>

ViewPagerIndicator 依赖于 Android 4.1.1.4,它位于 Maven Central here。 但是,我不是使用 Android 4.1.1.4 构建的,而是基于 4.2.2 r2 构建的,它是这样声明的:

<dependency>
  <groupId>android</groupId>
  <artifactId>android</artifactId>
  <version>4.2.2_r2</version>
</dependency>

此工件不在 Maven Central 上,我正在使用 maven-android-sdk-deployer 将 Android 工件推送到我的存储库中。

如果我打开终端并使用 maven 构建,则没有问题。问题是当我将项目导入 IntelliJ 并尝试构建时。模块设置(正确)抱怨 ViewPagerIndicator apklib 模块中 Android 4.1.1.4 依赖项的路径已损坏。

我检查了我的 .m2/repository 文件夹中的 Android 4.1.1.4 jar,甚至没有文件夹,这意味着 Maven 从未下载过它。我猜这与使用 Maven 构建时 maven-android-plugin 的工作方式与 IntelliJ 的构建方式有关。

我知道我可以自己手动部署 jar,但我正在寻找更好的解决方案,因此我团队中的新成员只需要获取源代码而无需执行其他任何操作来构建项目。我已经为团队设置了 Nexus,所以我们不必继续手动部署第三方 jar,并在每个人的机器上运行 sdk 部署程序。我希望能够将源代码交给一个新的开发者,他们就可以使用它来运行。

【问题讨论】:

    标签: android intellij-idea viewpagerindicator android-maven-plugin


    【解决方案1】:

    它适合我们的方式(结合 maven-android-sdk-deployer:

    <dependency>
        <groupId>com.viewpagerindicator</groupId>
        <artifactId>library</artifactId>
        <version>${viewpagerindicator.version}</version>
        <type>apklib</type>
        <exclusions>
            <exclusion>
                <groupId>com.google.android</groupId>
                <artifactId>android</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.google.android</groupId>
                <artifactId>support-v4</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    我们也在使用 IntelliJ 进行构建。通常只需打开 pom.xml 文件并对“您想将其作为项目打开吗?”说“是”。提示。

    【讨论】:

    • 如果我尝试排除无法构建的 Android 依赖项,ViewPagerIndicator 库中所有具有 Android 依赖项的类都会抱怨。
    • 你的 pom.xml 文件中有依赖于 Android 支持库吗? &lt;dependency&gt; &lt;groupId&gt;android.support&lt;/groupId&gt; &lt;artifactId&gt;compatibility-v4&lt;/artifactId&gt; &lt;version&gt;13&lt;/version&gt; &lt;/dependency&gt;
    • 是的,但是这样列出:&lt;dependency&gt; &lt;groupId&gt;com.google.android&lt;/groupId&gt; &lt;artifactId&gt;support-v4&lt;/artifactId&gt; &lt;version&gt;r13&lt;/version&gt; &lt;/dependency&gt;
    • 尝试使用我写的那个,因为它是从本地仓库而不是 maven Central 采购的。
    【解决方案2】:

    以下是事实:我的 maven 项目依赖于 maven 本身可构建的 apklib 模块,但不是通过 intellij。这种情况的解决方法如下:

    1. 将 maven 项目导入 intellij
    2. 打开 apklib 模块设置并将显式依赖 jar(android、support...)添加到模块。不要导出此依赖项。您还可以设置提供的范围。

    它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-31
      • 2017-06-25
      • 2019-08-03
      • 2016-06-19
      • 2018-10-22
      • 2016-03-10
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多